diff --git a/aleksis/apps/chronos/managers.py b/aleksis/apps/chronos/managers.py index b61587a8867745914f158c3d419e7c48c148d908..3d8f8e0ac263587b789d845ca3403510c30467d9 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(