Skip to content

Commit cf1138d

Browse files
committed
fix(sentry-FLAGSMITH-API-4BN): update permission method
Update get_permitted_environments on APIKeyUser to add support for prefetch_metadata
1 parent fc34a53 commit cf1138d

File tree

3 files changed

+136
-50
lines changed

3 files changed

+136
-50
lines changed

api/api_keys/user.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,11 @@ def get_permitted_projects(
9494
)
9595

9696
def get_permitted_environments(
97-
self, permission_key: str, project: "Project", tag_ids: typing.List[int] = None
97+
self,
98+
permission_key: str,
99+
project: "Project",
100+
tag_ids: typing.List[int] = None,
101+
prefetch_metadata: bool = False,
98102
) -> QuerySet["Environment"]:
99103
return get_permitted_environments_for_master_api_key(
100104
self.key, project, permission_key, tag_ids

api/permissions/permission_service.py

+10-4
Original file line numberDiff line numberDiff line change
@@ -151,13 +151,19 @@ def get_permitted_environments_for_master_api_key(
151151
project: Project,
152152
permission_key: str,
153153
tag_ids: List[int] = None,
154+
prefetch_metadata: bool = False,
154155
) -> QuerySet[Environment]:
155156
if is_master_api_key_project_admin(master_api_key, project):
156-
return project.environments.all()
157+
queryset = project.environments.all()
158+
else:
159+
queryset = get_permitted_environments_for_master_api_key_using_roles(
160+
master_api_key, project, permission_key, tag_ids
161+
)
157162

158-
return get_permitted_environments_for_master_api_key_using_roles(
159-
master_api_key, project, permission_key, tag_ids
160-
)
163+
if prefetch_metadata:
164+
queryset = queryset.prefetch_related("metadata")
165+
166+
return queryset
161167

162168

163169
def user_has_organisation_permission(

0 commit comments

Comments
 (0)