From a32c4988a93118ec9d7ba0b8e3fbbf8a4b78a91f Mon Sep 17 00:00:00 2001
From: Hangzhi Yu <hangzhi@protonmail.com>
Date: Tue, 5 Apr 2022 20:02:55 +0200
Subject: [PATCH] Optimize lesson period filtering in
 _generate_dicts_for_lesson_periods

---
 aleksis/apps/alsijil/util/alsijil_helpers.py | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/aleksis/apps/alsijil/util/alsijil_helpers.py b/aleksis/apps/alsijil/util/alsijil_helpers.py
index 0274100f0..8e203e8f6 100644
--- a/aleksis/apps/alsijil/util/alsijil_helpers.py
+++ b/aleksis/apps/alsijil/util/alsijil_helpers.py
@@ -193,14 +193,11 @@ def _generate_dicts_for_lesson_periods(
         "alsijil__inherit_privileges_from_parent_group"
     ]
     for lesson_period in lesson_periods:
-        parent_group_owned_by_person = (
-            filter_dict.get("person")
-            .owner_of.intersection(
-                Group.objects.filter(
-                    child_groups__in=Group.objects.filter(lessons__lesson_periods=lesson_period)
-                )
-            )
-            .exists()
+        parent_group_owned_by_person = inherit_privileges_preference and (
+            Group.objects.filter(
+                child_groups__in=Group.objects.filter(lessons__lesson_periods=lesson_period),
+                owners=filter_dict.get("person"),
+            ).exists()
         )
         for week in weeks:
             day = week[lesson_period.period.weekday]
@@ -226,7 +223,7 @@ def _generate_dicts_for_lesson_periods(
                 if filter_dict.get("person") and (
                     filter_dict.get("person") not in lesson_period.lesson.teachers.all()
                     and not sub
-                    and not (inherit_privileges_preference and parent_group_owned_by_person)
+                    and not parent_group_owned_by_person
                 ):
                     continue
 
-- 
GitLab