@@ -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