From 01bd6dfd7ddfc76a2cecda5358aaecb527d80386 Mon Sep 17 00:00:00 2001 From: Lucas Brandstaetter <lucas@brandstaetter.tech> Date: Mon, 21 Oct 2024 01:12:05 +0000 Subject: [PATCH] Fix conference accessible_by_user Using union prevents us from using filters in the get() method, so we need to use a list of ids instead. --- src/core/models/conference.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/core/models/conference.py b/src/core/models/conference.py index 0b8be5714..f1d5bbe2a 100644 --- a/src/core/models/conference.py +++ b/src/core/models/conference.py @@ -179,14 +179,12 @@ class ConferenceManager(models.Manager): return qs # limit on the public ones - qs = qs.filter(is_public=True) + public_query = qs.filter(is_public=True).values('id') # for logged-in members, add all non-public conferences in which the user has the staff flag set - conf_ids = ConferenceMember.objects.filter(user=user, is_staff=True, conference__is_public=False).values_list('conference_id', flat=True) - if len(conf_ids) > 0: - qs = qs.union(self.get_queryset().filter(id__in=conf_ids)) + conf_staff_query = ConferenceMember.objects.filter(user=user, is_staff=True, conference__is_public=False).values('conference_id') - return qs + return qs.filter(id__in=public_query.union(conf_staff_query)) def public_accessible(self): return self.get_queryset().filter(is_public=True) -- GitLab