2222from sentry .services .hybrid_cloud .project .service import project_service
2323from sentry .services .hybrid_cloud .project_key .model import ProjectKeyRole
2424from sentry .services .hybrid_cloud .project_key .service import project_key_service
25+ from sentry .services .hybrid_cloud .user .model import RpcUser
2526from sentry .utils .http import absolute_uri
2627from sentry .utils .security .orgauthtoken_token import (
2728 SystemUrlPrefixMissingException ,
@@ -75,58 +76,57 @@ def get(self, request: HttpRequest, wizard_hash) -> HttpResponse:
7576 # responses, but project names/slugs aren't unique across regions which could confuse some users.
7677 # Wizard should display region beside project/orgs or have a step to ask which region.
7778
78- region_data_map = defaultdict (lambda : defaultdict (list ))
7979 # {'us': {'org_ids': [...], 'projects': [...], 'keys': [...]}}
80+ region_data_map = defaultdict (lambda : defaultdict (list ))
8081
82+ org_mappings_map = {}
8183 for mapping in org_mappings :
8284 region_data_map [mapping .region_name ]["org_ids" ].append (mapping .organization_id )
85+ status = OrganizationStatus (mapping .status )
86+ serialized_mapping = {
87+ "id" : mapping .organization_id ,
88+ "name" : mapping .name ,
89+ "slug" : mapping .slug ,
90+ "region" : mapping .region_name ,
91+ "status" : {"id" : status .name .lower (), "name" : status .label },
92+ }
93+ org_mappings_map [mapping .organization_id ] = serialized_mapping
8394
8495 for region_name , region_data in region_data_map .items ():
8596 org_ids = region_data ["org_ids" ]
86- region_data [ " projects" ] = project_service .get_many_by_organizations (
97+ projects = project_service .get_many_by_organizations (
8798 region_name = region_name , organization_ids = org_ids
8899 )
100+ region_data ["projects" ] = projects
89101
102+ keys_map = defaultdict (list )
90103 for region_name , region_data in region_data_map .items ():
91104 project_ids = [rpc_project .id for rpc_project in region_data ["projects" ]]
92- region_data [ " keys" ] = project_key_service .get_project_keys_by_region (
105+ keys = project_key_service .get_project_keys_by_region (
93106 region_name = region_name ,
94107 project_ids = project_ids ,
95108 role = ProjectKeyRole .store ,
96109 )
97-
98- org_mappings_map = {}
99- for mapping in org_mappings :
100- status = OrganizationStatus (mapping .status )
101- serialized_mapping = {
102- "id" : mapping .organization_id ,
103- "name" : mapping .name ,
104- "slug" : mapping .slug ,
105- "region" : mapping .region_name ,
106- "status" : {"id" : status .name .lower (), "name" : status .label },
107- }
108- org_mappings_map [mapping .organization_id ] = serialized_mapping
109-
110- keys_map = defaultdict (list )
111- for key in region_data ["keys" ]:
112- serialized_key = {
113- "dsn" : {"public" : key .dsn_public },
114- "isActive" : key .is_active ,
115- }
116- keys_map [key .project_id ].append (serialized_key )
110+ region_data ["keys" ] = keys
111+ for key in region_data ["keys" ]:
112+ serialized_key = {
113+ "dsn" : {"public" : key .dsn_public },
114+ "isActive" : key .is_active ,
115+ }
116+ keys_map [key .project_id ].append (serialized_key )
117117
118118 filled_projects = []
119-
120- for project in region_data ["projects" ]:
121- enriched_project = {
122- "slug" : project .slug ,
123- "id" : project .id ,
124- "status" : STATUS_LABELS .get (project .status , "unknown" ),
125- }
126- # The wizard only reads the a few fields so serializing the mapping should work fine
127- enriched_project ["organization" ] = org_mappings_map [project .organization_id ]
128- enriched_project ["keys" ] = keys_map [project .id ]
129- filled_projects .append (enriched_project )
119+ for region_name , region_data in region_data_map . items ():
120+ for project in region_data ["projects" ]:
121+ enriched_project = {
122+ "slug" : project .slug ,
123+ "id" : project .id ,
124+ "status" : STATUS_LABELS .get (project .status , "unknown" ),
125+ }
126+ # The wizard only reads the a few fields so serializing the mapping should work fine
127+ enriched_project ["organization" ] = org_mappings_map [project .organization_id ]
128+ enriched_project ["keys" ] = keys_map [project .id ]
129+ filled_projects .append (enriched_project )
130130
131131 # Fetching or creating a token
132132 serialized_token = get_token (org_mappings , request .user )
@@ -140,7 +140,7 @@ def get(self, request: HttpRequest, wizard_hash) -> HttpResponse:
140140 return render_to_response ("sentry/setup-wizard.html" , context , request )
141141
142142
143- def get_token (mappings : List [OrganizationMapping ], user : User ):
143+ def get_token (mappings : List [OrganizationMapping ], user : RpcUser ):
144144 can_use_org_tokens = len (mappings ) == 1
145145
146146 # If only one org, try to generate an org auth token
@@ -164,7 +164,7 @@ def get_token(mappings: List[OrganizationMapping], user: User):
164164 return serialize (token )
165165
166166
167- def get_org_token (mapping : OrganizationMapping , user : User ):
167+ def get_org_token (mapping : OrganizationMapping , user : User | RpcUser ):
168168 try :
169169 token_str = generate_token (
170170 mapping .slug , generate_region_url (region_name = mapping .region_name )
0 commit comments