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