From cbd4e140b8e793bf30056c767952e77f42f5608a Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Tue, 18 Aug 2020 18:30:16 +0200 Subject: [PATCH] Add several small bug fixes --- aleksis/apps/alsijil/model_extensions.py | 5 ++++- aleksis/apps/alsijil/rules.py | 9 +++++++++ aleksis/apps/alsijil/util/predicates.py | 7 ++++--- aleksis/apps/alsijil/views.py | 4 ++-- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/aleksis/apps/alsijil/model_extensions.py b/aleksis/apps/alsijil/model_extensions.py index 5113723f4..ce997f31a 100644 --- a/aleksis/apps/alsijil/model_extensions.py +++ b/aleksis/apps/alsijil/model_extensions.py @@ -108,7 +108,10 @@ def get_personal_notes(self, persons: QuerySet, wanted_week: CalendarWeek): personal_note.groups_of_person.set(personal_note.person.member_of.all()) return PersonalNote.objects.select_related("person").filter( - lesson_period=self, week=wanted_week.week, year=wanted_week.year + lesson_period=self, + week=wanted_week.week, + year=wanted_week.year, + person__in=persons, ) diff --git a/aleksis/apps/alsijil/rules.py b/aleksis/apps/alsijil/rules.py index ec1c62fa3..73d8879cf 100644 --- a/aleksis/apps/alsijil/rules.py +++ b/aleksis/apps/alsijil/rules.py @@ -36,6 +36,15 @@ add_perm("alsijil.view_lesson", view_lesson_predicate) # View lesson in menu add_perm("alsijil.view_lesson_menu", has_person) +# View lesson personal notes +view_lesson_personal_notes_predicate = has_person & ( + has_global_perm("alsijil.view_personalnote") + | has_lesson_group_object_perm("core.view_personalnote_group") + | is_lesson_teacher + | is_lesson_parent_group_owner +) +add_perm("alsijil.view_lesson_personalnote", view_lesson_personal_notes_predicate) + # View personal note view_personal_note_predicate = has_person & ( has_global_perm("alsijil.view_personalnote") diff --git a/aleksis/apps/alsijil/util/predicates.py b/aleksis/apps/alsijil/util/predicates.py index 05c29eacc..3e62d17a2 100644 --- a/aleksis/apps/alsijil/util/predicates.py +++ b/aleksis/apps/alsijil/util/predicates.py @@ -21,9 +21,10 @@ def is_lesson_teacher(user: User, obj: LessonPeriod) -> bool: in the lesson or the substitution linked to the given LessonPeriod. """ if obj: - return user.person in obj.lesson.teachers.all() or user.person in Person.objects.filter( - lesson_substitutions=obj.get_substitution() - ) + sub = obj.get_substitution() + if sub and sub in user.person.lesson_substitutions.all(): + return True + return user.person in obj.lesson.teachers.all() return True diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py index 2c75b4286..9bf9be6a5 100644 --- a/aleksis/apps/alsijil/views.py +++ b/aleksis/apps/alsijil/views.py @@ -107,9 +107,9 @@ def lesson( ) # Create a formset that holds all personal notes for all persons in this lesson - persons = Person.objects + persons = Person.objects.all() if not request.user.has_perm("alsijil.view_lesson_personalnote", lesson_period): - persons = persons.filter(pk=request.user.pk) + persons = persons.filter(pk=request.user.person.pk) persons_qs = lesson_period.get_personal_notes(persons, wanted_week) personal_note_formset = PersonalNoteFormSet( request.POST or None, queryset=persons_qs, prefix="personal_notes" -- GitLab