From 05dd6d083383e8cb9a98de6f31617a1dac25484a Mon Sep 17 00:00:00 2001
From: Hangzhi Yu <hangzhi@protonmail.com>
Date: Wed, 4 Dec 2024 19:50:25 +0100
Subject: [PATCH] Fix prefetch absence logic

---
 aleksis/apps/chronos/models.py | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py
index dcea65ea..468f6678 100644
--- a/aleksis/apps/chronos/models.py
+++ b/aleksis/apps/chronos/models.py
@@ -440,9 +440,6 @@ class LessonEvent(CalendarEvent):
             own = params.get("own", False)
             return_all = params.get("all", False)
 
-            if prefetch_absences:
-                objs = objs.prefetch_related("teachers__kolego_absences")
-
             if not_amended:
                 q = q & LessonEventQuerySet.not_amended_q()
 
@@ -511,14 +508,18 @@ class LessonEvent(CalendarEvent):
 
         elif request:
             q = q & LessonEventQuerySet.for_person_q(request.user.person)
-
+            
+        prefetch_fields = ["groups", "teachers", "rooms", "groups__members"]
+        if prefetch_absences:
+            prefetch_fields.append("teachers__kolego_absences")
+        
         objs = super().get_objects(
             request,
             params,
             start_qs=cls.objects.not_instance_of(SupervisionEvent),
             additional_filter=q,
             select_related=["subject", "course"],
-            prefetch_related=["groups", "teachers", "rooms", "groups__members"],
+            prefetch_related=prefetch_fields,
             **kwargs,
         )
         return objs
-- 
GitLab