Skip to content

Commit 4a5f3d7

Browse files
committed
move query from serialize to get_attrs
1 parent ca3af66 commit 4a5f3d7

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
@@ -575,7 +575,27 @@ class DetailedOrganizationSerializer(OrganizationSerializer):
575575
def get_attrs(
576576
self, item_list: Sequence[Organization], user: User | RpcUser | AnonymousUser, **kwargs: Any
577577
) -> MutableMapping[Organization, MutableMapping[str, Any]]:
578-
return super().get_attrs(item_list, user)
578+
attrs = super().get_attrs(item_list, user)
579+
580+
replay_permissions = {
581+
opt.organization_id: opt.value
582+
for opt in OrganizationOption.objects.filter(
583+
organization__in=item_list, key="sentry:granular-replay-permissions"
584+
)
585+
}
586+
587+
replay_access_by_org: dict[int, list[int]] = {}
588+
for org_id, user_id in OrganizationMemberReplayAccess.objects.filter(
589+
organizationmember__organization__in=item_list
590+
).values_list("organizationmember__organization_id", "organizationmember__user_id"):
591+
if user_id is not None:
592+
replay_access_by_org.setdefault(org_id, []).append(user_id)
593+
594+
for item in item_list:
595+
attrs[item]["replay_permissions_enabled"] = replay_permissions.get(item.id, False)
596+
attrs[item]["replay_access_members"] = replay_access_by_org.get(item.id, [])
597+
598+
return attrs
579599

580600
def serialize( # type: ignore[override]
581601
self,
@@ -756,21 +776,8 @@ def serialize( # type: ignore[override]
756776
}
757777

758778
if features.has("organizations:granular-replay-permissions", obj):
759-
permissions_enabled = (
760-
OrganizationOption.objects.filter(
761-
organization=obj, key="sentry:granular-replay-permissions"
762-
)
763-
.values_list("value", flat=True)
764-
.first()
765-
)
766-
context["hasGranularReplayPermissions"] = bool(permissions_enabled)
767-
context["replayAccessMembers"] = [
768-
user_id
769-
for user_id in OrganizationMemberReplayAccess.objects.filter(
770-
organizationmember__organization=obj
771-
).values_list("organizationmember__user_id", flat=True)
772-
if user_id is not None
773-
]
779+
context["hasGranularReplayPermissions"] = bool(attrs.get("replay_permissions_enabled"))
780+
context["replayAccessMembers"] = attrs.get("replay_access_members", [])
774781

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

0 commit comments

Comments
 (0)