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