From eceac4853b8a3a7a5d64a7931b11deffdd6fc41f Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Wed, 1 Apr 2020 12:49:48 +0200 Subject: [PATCH] Rewrite filter_group to select lessons only one time --- aleksis/apps/chronos/models.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py index 09ed5d83..945b9d1e 100644 --- a/aleksis/apps/chronos/models.py +++ b/aleksis/apps/chronos/models.py @@ -127,10 +127,17 @@ class LessonDataQuerySet(models.QuerySet): def filter_group(self, group: Union[Group, int]): """ Filter for all lessons a group (class) regularly attends. """ - return self.filter( - Q(**{self._period_path + "lesson__groups": group}) - | Q(**{self._period_path + "lesson__groups__parent_groups": group}) - ) + if isinstance(group, int): + group = Group.objects.get(pk=group) + + if group.parent_groups: + # Prevent to show lessons multiple times + return self.filter(Q(**{self._period_path + "lesson__groups": group})) + else: + return self.filter( + Q(**{self._period_path + "lesson__groups": group}) + | Q(**{self._period_path + "lesson__groups__parent_groups": group}) + ) def filter_teacher(self, teacher: Union[Person, int]): """ Filter for all lessons given by a certain teacher. """ -- GitLab