diff --git a/aleksis/apps/alsijil/rules.py b/aleksis/apps/alsijil/rules.py index c20c0cfeefe628efb5a01c190fce99e671af9b22..8ee92ec5eb2f53b472e0b873995a3522d54c6d32 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 3bd37b491bc5f056d7e097407a547b323eed6c32..3d988c8f4c3134b46451d04b24a570177473c44a 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