From 0e4ce68d999ae08b81e2812ec30a7a5d3b118839 Mon Sep 17 00:00:00 2001 From: Michael Bauer <michael-bauer@posteo.de> Date: Tue, 30 Apr 2024 12:49:56 +0200 Subject: [PATCH] Add for_participant manager that returns all lessonEvent a person participates in. --- aleksis/apps/chronos/managers.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/aleksis/apps/chronos/managers.py b/aleksis/apps/chronos/managers.py index b61587a8..3d8f8e0a 100644 --- a/aleksis/apps/chronos/managers.py +++ b/aleksis/apps/chronos/managers.py @@ -876,6 +876,15 @@ class LessonEventQuerySet(PolymorphicQuerySet): ) return self.filter(Q(teachers=teacher) | Q(pk__in=amended)).distinct() + def for_participant(self, person: Union[int, Person]) -> "LessonEventQuerySet": + """Get all lesson events the person participates in (including amends).""" + amended = self.filter( + Q(amended_by__isnull=False) | Q(groups__members=person) + ).values_list("amended_by__pk", flat=True) + return self.filter( + Q(groups__members=person) | Q(pk__in=amended) + ).distinct() + def for_group(self, group: Union[int, Group]) -> "LessonEventQuerySet": """Get all lesson events for a certain group (including amends/as parent group).""" amended = self.filter( -- GitLab