File tree 2 files changed +6
-0
lines changed
2 files changed +6
-0
lines changed Original file line number Diff line number Diff line change @@ -9,6 +9,8 @@ class AdminPermissionBase:
9
9
10
10
@classmethod
11
11
def is_admin (cls , user , project ):
12
+ # This explicitly uses "user in project.users.all" so that
13
+ # users on projects can be cached using prefetch_related or prefetch_related_objects
12
14
return user in project .users .all () or user .is_superuser
13
15
14
16
@classmethod
Original file line number Diff line number Diff line change 13
13
from django .contrib .auth .models import User
14
14
from django .core .cache import cache
15
15
from django .core .files .storage import get_storage_class
16
+ from django .db .models import prefetch_related_objects
16
17
from django .http import HttpResponse , HttpResponseRedirect
17
18
from django .shortcuts import get_object_or_404 , render
18
19
from django .urls import reverse
@@ -271,6 +272,9 @@ def project_versions(request, project_slug):
271
272
if wiped and wiped_version .count ():
272
273
messages .success (request , 'Version wiped: ' + wiped )
273
274
275
+ # Optimize project permission checks
276
+ prefetch_related_objects ([project ], 'users' )
277
+
274
278
return render (
275
279
request ,
276
280
'projects/project_version_list.html' ,
You can’t perform that action at this time.
0 commit comments