Skip to content
Snippets Groups Projects
Verified Commit cbd4e140 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Add several small bug fixes

parent f9ba7388
No related branches found
No related tags found
1 merge request!49Resolve "Add rules and permissions"
Pipeline #3492 passed
...@@ -108,7 +108,10 @@ def get_personal_notes(self, persons: QuerySet, wanted_week: CalendarWeek): ...@@ -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()) personal_note.groups_of_person.set(personal_note.person.member_of.all())
return PersonalNote.objects.select_related("person").filter( 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,
) )
......
...@@ -36,6 +36,15 @@ add_perm("alsijil.view_lesson", view_lesson_predicate) ...@@ -36,6 +36,15 @@ add_perm("alsijil.view_lesson", view_lesson_predicate)
# View lesson in menu # View lesson in menu
add_perm("alsijil.view_lesson_menu", has_person) 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
view_personal_note_predicate = has_person & ( view_personal_note_predicate = has_person & (
has_global_perm("alsijil.view_personalnote") has_global_perm("alsijil.view_personalnote")
......
...@@ -21,9 +21,10 @@ def is_lesson_teacher(user: User, obj: LessonPeriod) -> bool: ...@@ -21,9 +21,10 @@ def is_lesson_teacher(user: User, obj: LessonPeriod) -> bool:
in the lesson or the substitution linked to the given LessonPeriod. in the lesson or the substitution linked to the given LessonPeriod.
""" """
if obj: if obj:
return user.person in obj.lesson.teachers.all() or user.person in Person.objects.filter( sub = obj.get_substitution()
lesson_substitutions=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 return True
......
...@@ -107,9 +107,9 @@ def lesson( ...@@ -107,9 +107,9 @@ def lesson(
) )
# Create a formset that holds all personal notes for all persons in this 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): 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) persons_qs = lesson_period.get_personal_notes(persons, wanted_week)
personal_note_formset = PersonalNoteFormSet( personal_note_formset = PersonalNoteFormSet(
request.POST or None, queryset=persons_qs, prefix="personal_notes" request.POST or None, queryset=persons_qs, prefix="personal_notes"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment