From 7f27e2afa761813764ac492afd59bb9f3ade47a4 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Sun, 3 Nov 2024 22:18:49 +0100 Subject: [PATCH] Try union for the get_objects for_person_q --- aleksis/apps/chronos/managers.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/aleksis/apps/chronos/managers.py b/aleksis/apps/chronos/managers.py index f02daf46..4cf0cfe6 100644 --- a/aleksis/apps/chronos/managers.py +++ b/aleksis/apps/chronos/managers.py @@ -100,10 +100,15 @@ class LessonEventQuerySet(RecurrencePolymorphicQuerySet): """Get all lesson events for a certain person (as teacher/participant, including amends).""" from .models import LessonEvent - amended = LessonEvent.objects.filter( - Q(amended_by__isnull=False) & (Q(teachers=person) | Q(groups__members=person)) - ).values_list("amended_by__pk", flat=True) - return Q(teachers=person) | Q(groups__members=person) | Q(pk__in=amended) + amended = ( + LessonEvent.objects.filter( + Q(amended_by__isnull=False) & (Q(teachers=person) | Q(groups__members=person)) + ) + .values_list("amended_by__pk", flat=True) + .union(LessonEvent.objects.filter(teachers=person).values_list("pk", flat=True)) + .union(LessonEvent.objects.filter(groups__members=person).values_list("pk", flat=True)) + ) + return Q(pk__in=amended) def for_person(self, person: Union[int, Person]) -> "LessonEventQuerySet": """Get all lesson events for a certain person (as teacher/participant, including amends).""" -- GitLab