From e7b8690c761182f0990c4e42cd43d7176e64e080 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Thu, 10 Sep 2020 18:32:06 +0200 Subject: [PATCH] Simplify some queries --- aleksis/apps/alsijil/util/predicates.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/aleksis/apps/alsijil/util/predicates.py b/aleksis/apps/alsijil/util/predicates.py index fdd189079..a018dbbb7 100644 --- a/aleksis/apps/alsijil/util/predicates.py +++ b/aleksis/apps/alsijil/util/predicates.py @@ -8,7 +8,10 @@ from rules import predicate from aleksis.apps.chronos.models import LessonPeriod from aleksis.core.models import Group, Person -from aleksis.core.util.core_helpers import get_content_type_by_perm, get_site_preferences +from aleksis.core.util.core_helpers import ( + get_content_type_by_perm, + get_site_preferences, +) from ..models import PersonalNote @@ -83,7 +86,10 @@ def is_person_group_owner(user: User, obj: Person) -> bool: the owner of any group of the given person. """ if obj: - return obj.member_of.filter(owners=user.person).exists() + for group in obj.member_of.all(): + if user.person in list(group.owners.all()): + return True + return False return False @@ -132,7 +138,7 @@ def is_group_member(user: User, obj: Union[Group, Person]) -> bool: If there isn't provided a group, it will return `False`. """ if isinstance(obj, Group): - if obj.members.filter(pk=user.person.pk).exists(): + if user.person in obj.members.all(): return True return False @@ -237,10 +243,10 @@ def is_personal_note_lesson_parent_group_owner(user: User, obj: PersonalNote) -> """ if hasattr(obj, "lesson_period"): if hasattr(obj.lesson_period, "lesson"): - return obj.lesson_period.lesson.groups.filter( - parent_groups__owners=user.person - ).exists() - return False + for group in obj.lesson_period.lesson.groups.all(): + for parent_group in group.parent_groups.all(): + if user.person in list(parent_group.owners.all()): + return True return False -- GitLab