Skip to content

Commit 3c54328

Browse files
committed
move query from serialize to get_attrs
1 parent 794769d commit 3c54328

File tree

1 file changed

+23
-16
lines changed

1 file changed

+23
-16
lines changed

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

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -566,7 +566,27 @@ class DetailedOrganizationSerializer(OrganizationSerializer):
566566
def get_attrs(
567567
self, item_list: Sequence[Organization], user: User | RpcUser | AnonymousUser, **kwargs: Any
568568
) -> MutableMapping[Organization, MutableMapping[str, Any]]:
569-
return super().get_attrs(item_list, user)
569+
attrs = super().get_attrs(item_list, user)
570+
571+
replay_permissions = {
572+
opt.organization_id: opt.value
573+
for opt in OrganizationOption.objects.filter(
574+
organization__in=item_list, key="sentry:granular-replay-permissions"
575+
)
576+
}
577+
578+
replay_access_by_org: dict[int, list[int]] = {}
579+
for org_id, user_id in OrganizationMemberReplayAccess.objects.filter(
580+
organizationmember__organization__in=item_list
581+
).values_list("organizationmember__organization_id", "organizationmember__user_id"):
582+
if user_id is not None:
583+
replay_access_by_org.setdefault(org_id, []).append(user_id)
584+
585+
for item in item_list:
586+
attrs[item]["replay_permissions_enabled"] = replay_permissions.get(item.id, False)
587+
attrs[item]["replay_access_members"] = replay_access_by_org.get(item.id, [])
588+
589+
return attrs
570590

571591
def serialize( # type: ignore[override]
572592
self,
@@ -732,21 +752,8 @@ def serialize( # type: ignore[override]
732752
}
733753

734754
if features.has("organizations:granular-replay-permissions", obj):
735-
permissions_enabled = (
736-
OrganizationOption.objects.filter(
737-
organization=obj, key="sentry:granular-replay-permissions"
738-
)
739-
.values_list("value", flat=True)
740-
.first()
741-
)
742-
context["hasGranularReplayPermissions"] = bool(permissions_enabled)
743-
context["replayAccessMembers"] = [
744-
user_id
745-
for user_id in OrganizationMemberReplayAccess.objects.filter(
746-
organizationmember__organization=obj
747-
).values_list("organizationmember__user_id", flat=True)
748-
if user_id is not None
749-
]
755+
context["hasGranularReplayPermissions"] = bool(attrs.get("replay_permissions_enabled"))
756+
context["replayAccessMembers"] = attrs.get("replay_access_members", [])
750757

751758
if has_custom_dynamic_sampling(obj, actor=user):
752759
context["targetSampleRate"] = float(

0 commit comments

Comments
 (0)