@@ -153,13 +153,14 @@ def get(self, request, *args, **kwargs):
153
153
if project is None :
154
154
return HttpResponseNotFound ()
155
155
156
- collab = CollabService (request , context = kwargs ["project_id" ])
157
- if (collab .can_view # public collab, or a member of a private collab
158
- and (collab .is_team_member or project .accepted )): # for public collabs, only accepted projects can be viewed
159
- content = self .serializer .serialize (project )
160
- return HttpResponse (content , content_type = "application/json; charset=utf-8" , status = 200 )
161
- else :
162
- return json_err (HttpResponseForbidden , "You do not have permission to view this resource." )
156
+ if not is_admin (request ):
157
+ collab = CollabService (request , context = kwargs ["project_id" ])
158
+ if not (collab .can_view # public collab, or a member of a private collab
159
+ and (collab .is_team_member or project .accepted )): # for public collabs, only accepted projects can be viewed
160
+ return json_err (HttpResponseForbidden , "You do not have permission to view this resource." )
161
+
162
+ content = self .serializer .serialize (project )
163
+ return HttpResponse (content , content_type = "application/json; charset=utf-8" , status = 200 )
163
164
164
165
def put (self , request , * args , ** kwargs ):
165
166
"""Edit a proposal"""
@@ -299,9 +300,10 @@ def get(self, request, *args, **kwargs):
299
300
if project is None :
300
301
return json_err (HttpResponseNotFound , "No such project" )
301
302
302
- collab = CollabService (request , context = kwargs ["project_id" ])
303
- if not collab .is_team_member :
304
- return json_err (HttpResponseForbidden , "You do not have permission to view this resource." )
303
+ if not is_admin (request ):
304
+ collab = CollabService (request , context = kwargs ["project_id" ])
305
+ if not collab .is_team_member :
306
+ return json_err (HttpResponseForbidden , "You do not have permission to view this resource." )
305
307
306
308
quota = self ._get_quota (kwargs ["quota_id" ]) # use project+platform instead of quota id
307
309
if quota is None :
@@ -332,10 +334,10 @@ def get(self, request, *args, **kwargs):
332
334
project = self ._get_project (kwargs ["project_id" ])
333
335
if project is None :
334
336
return json_err (HttpResponseNotFound , "No such project" )
335
- collab = CollabService (request , context = kwargs [ "project_id" ])
336
- if not collab . is_team_member :
337
- # todo: admins should be able to see quotas even if they are not a member of the collab
338
- return json_err (HttpResponseForbidden , "You do not have permission to view this resource." )
337
+ if not is_admin (request ):
338
+ collab = CollabService ( request , context = kwargs [ "project_id" ])
339
+ if not collab . is_team_member :
340
+ return json_err (HttpResponseForbidden , "You do not have permission to view this resource." )
339
341
quotas = Quota .objects .filter (project = project )
340
342
content = self .serializer .serialize (quotas )
341
343
return HttpResponse (content , content_type = "application/json; charset=utf-8" , status = 200 )
0 commit comments