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