From 394965458d535ce9ae87c922875fbdb81d5cc573 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Sun, 16 Aug 2020 12:46:58 +0200 Subject: [PATCH] Do not all queries in has_any_object_absence, only necessary ones --- aleksis/apps/alsijil/util/predicates.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/aleksis/apps/alsijil/util/predicates.py b/aleksis/apps/alsijil/util/predicates.py index 68e212c71..4c9f369fc 100644 --- a/aleksis/apps/alsijil/util/predicates.py +++ b/aleksis/apps/alsijil/util/predicates.py @@ -191,7 +191,9 @@ def has_any_object_absence(user: User) -> bool: """ Predicate which builds a query with all the persons the given users is allowed to register an absence for. """ - return get_objects_for_user(user, "core.register_absence_person", Person)\ - .union(Person.objects.filter(member_of__owners=user.person))\ - .union(Person.objects.filter(member_of__in=get_objects_for_user(user, "core.register_absence_group", Group)))\ - .exists() + if get_objects_for_user(user, "core.register_absence_person", Person).exists(): + return True + if Person.objects.filter(member_of__owners=user.person).exists(): + return True + if Person.objects.filter(member_of__in=get_objects_for_user(user, "core.register_absence_group", Group)).exists(): + return True -- GitLab