Skip to content

Commit 90de511

Browse files
JoshFergeevanh
authored andcommitted
perf(projects): use unusedFeatures in more places (#82065)
use the `ununusedFeatures` collapse parameter in more places. see some slowness due to teams serializer having to render all of the project feature flags.
1 parent 661a162 commit 90de511

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

src/sentry/api/endpoints/project_team_details.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,12 @@ def post(self, request: Request, project, team: Team) -> Response:
9090
event=audit_log.get_event_id("PROJECT_TEAM_ADD"),
9191
data={"team_slug": team.slug, "project_slug": project.slug},
9292
)
93-
return Response(serialize(project, request.user, ProjectWithTeamSerializer()), status=201)
93+
return Response(
94+
serialize(
95+
project, request.user, ProjectWithTeamSerializer(collapse=["unusedFeatures"])
96+
),
97+
status=201,
98+
)
9499

95100
@extend_schema(
96101
operation_id="Delete a Team from a Project",

src/sentry/api/serializers/models/team.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,8 @@ def _collapse(self, key: str) -> bool:
183183
def get_attrs(
184184
self, item_list: Sequence[Team], user: User, **kwargs: Any
185185
) -> dict[Team, dict[str, Any]]:
186+
from sentry.api.serializers.models.project import ProjectSerializer
187+
186188
request = env.request
187189
org_ids = {t.organization_id for t in item_list}
188190

@@ -244,7 +246,11 @@ def get_attrs(
244246
projects = [pt.project for pt in project_teams]
245247

246248
projects_by_id = {
247-
project.id: data for project, data in zip(projects, serialize(projects, user))
249+
project.id: data
250+
for project, data in zip(
251+
projects,
252+
serialize(projects, user, ProjectSerializer(collapse=["unusedFeatures"])),
253+
)
248254
}
249255

250256
project_map = defaultdict(list)

tests/sentry/api/serializers/test_team.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from django.conf import settings
44

55
from sentry.api.serializers import serialize
6+
from sentry.api.serializers.models.project import ProjectSerializer
67
from sentry.api.serializers.models.team import TeamSCIMSerializer, TeamWithProjectsSerializer
78
from sentry.app import env
89
from sentry.models.organizationmember import InviteStatus
@@ -252,7 +253,9 @@ def test_simple(self):
252253
project2 = self.create_project(teams=[team], organization=organization, name="bar")
253254

254255
result = serialize(team, user, TeamWithProjectsSerializer())
255-
serialized_projects = serialize([project2, project], user)
256+
serialized_projects = serialize(
257+
[project2, project], user, ProjectSerializer(collapse=["unusedFeatures"])
258+
)
256259

257260
assert result == {
258261
"id": str(team.id),

0 commit comments

Comments
 (0)