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