Skip to content

Commit 96d4e31

Browse files
authored
Merge pull request #5460 from rtfd/davidfischer/optimize-versions-page
Optimize the version list screen
2 parents 44ad4a5 + 195ad31 commit 96d4e31

File tree

2 files changed

+6
-0
lines changed

2 files changed

+6
-0
lines changed

readthedocs/core/permissions.py

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ class AdminPermissionBase:
99

1010
@classmethod
1111
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
1214
return user in project.users.all() or user.is_superuser
1315

1416
@classmethod

readthedocs/projects/views/public.py

+4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from django.contrib.auth.models import User
1414
from django.core.cache import cache
1515
from django.core.files.storage import get_storage_class
16+
from django.db.models import prefetch_related_objects
1617
from django.http import HttpResponse, HttpResponseRedirect
1718
from django.shortcuts import get_object_or_404, render
1819
from django.urls import reverse
@@ -271,6 +272,9 @@ def project_versions(request, project_slug):
271272
if wiped and wiped_version.count():
272273
messages.success(request, 'Version wiped: ' + wiped)
273274

275+
# Optimize project permission checks
276+
prefetch_related_objects([project], 'users')
277+
274278
return render(
275279
request,
276280
'projects/project_version_list.html',

0 commit comments

Comments
 (0)