public: prefetch the userprofile table

We request all pgp_key's in a loop which would lead to 100 queries,
prefetching the userprofile makes the page load with 26 queries as of
writing.
This commit is contained in:
Jelle van der Waa 2024-07-20 15:45:09 +02:00 committed by Jelle van der Waa
parent 34190c241d
commit bd80eb4e65

View File

@ -93,7 +93,7 @@ def feeds(request):
def keys(request):
profile_ids = UserProfile.allowed_repos.through.objects.values('userprofile_id')
users = User.objects.filter(
is_active=True, userprofile__id__in=profile_ids).order_by('first_name', 'last_name')
is_active=True, userprofile__id__in=profile_ids).order_by('first_name', 'last_name').select_related('userprofile')
user_key_ids = frozenset(user.userprofile.pgp_key[-16:] for user in users
if user.userprofile.pgp_key)