From 47ab315d225b2b58e83eab800b04a82b0b3dd10c Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Sat, 24 Oct 2020 12:46:50 +0200 Subject: [PATCH] Fix defaults of some predicates (True to False) and catch side effect of this change --- aleksis/apps/alsijil/rules.py | 2 ++ aleksis/apps/alsijil/util/predicates.py | 14 ++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/aleksis/apps/alsijil/rules.py b/aleksis/apps/alsijil/rules.py index c20c0cfee..8ee92ec5e 100644 --- a/aleksis/apps/alsijil/rules.py +++ b/aleksis/apps/alsijil/rules.py @@ -18,6 +18,7 @@ from .util.predicates import ( is_lesson_parent_group_owner, is_lesson_participant, is_lesson_teacher, + is_none, is_own_personal_note, is_person_group_owner, is_person_primary_group_owner, @@ -29,6 +30,7 @@ from .util.predicates import ( # View lesson view_lesson_predicate = has_person & ( has_global_perm("alsijil.view_lesson") + | is_none # View is opened as "Current lesson" | is_lesson_teacher | is_lesson_participant | is_lesson_parent_group_owner diff --git a/aleksis/apps/alsijil/util/predicates.py b/aleksis/apps/alsijil/util/predicates.py index 3bd37b491..3d988c8f4 100644 --- a/aleksis/apps/alsijil/util/predicates.py +++ b/aleksis/apps/alsijil/util/predicates.py @@ -1,4 +1,4 @@ -from typing import Union +from typing import Any, Union from django.contrib.auth.models import User @@ -12,6 +12,12 @@ from aleksis.core.util.predicates import check_object_permission from ..models import PersonalNote +@predicate +def is_none(user: User, obj: Any) -> bool: + """Predicate that checks if the provided object is None-like.""" + return bool(obj) + + @predicate def is_lesson_teacher(user: User, obj: LessonPeriod) -> bool: """Predicate for teachers of a lesson. @@ -24,7 +30,7 @@ def is_lesson_teacher(user: User, obj: LessonPeriod) -> bool: if sub and sub in user.person.lesson_substitutions.all(): return True return user.person in obj.lesson.teachers.all() - return True + return False @predicate @@ -36,7 +42,7 @@ def is_lesson_participant(user: User, obj: LessonPeriod) -> bool: """ if hasattr(obj, "lesson"): return obj.lesson.groups.filter(members=user.person).exists() - return True + return False @predicate @@ -49,7 +55,7 @@ def is_lesson_parent_group_owner(user: User, obj: LessonPeriod) -> bool: """ if hasattr(obj, "lesson"): return obj.lesson.groups.filter(parent_groups__owners=user.person).exists() - return True + return False @predicate -- GitLab