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