diff --git a/aleksis/apps/alsijil/menus.py b/aleksis/apps/alsijil/menus.py index 2b84cb6f7f70b644a34f79f170dfc4cb6751f773..4ed08937ba4ea9263f7304f627819232ca0abf0f 100644 --- a/aleksis/apps/alsijil/menus.py +++ b/aleksis/apps/alsijil/menus.py @@ -16,25 +16,45 @@ MENUS = { "name": _("Current lesson"), "url": "lesson", "icon": "alarm", - "validators": ["menu_generator.validators.is_authenticated"], + "validators": [ + ( + "aleksis.core.util.predicates.permission_validator", + "alsijil.view_lesson_menu", + ), + ], }, { "name": _("Current week"), "url": "week_view", "icon": "view_week", - "validators": ["menu_generator.validators.is_authenticated"], + "validators": [ + ( + "aleksis.core.util.predicates.permission_validator", + "alsijil.view_week_menu", + ), + ], }, { "name": _("Register absence"), "url": "register_absence", "icon": "rate_review", - "validators": ["menu_generator.validators.is_superuser"], + "validators": [ + ( + "aleksis.core.util.predicates.permission_validator", + "alsijil.view_register_absence", + ), + ], }, { "name": _("Personal note filters"), "url": "list_personal_note_filters", "icon": "filter_list", - "validators": ["menu_generator.validators.is_superuser"], + "validators": [ + ( + "aleksis.core.util.predicates.permission_validator", + "alsijil.view_personal_note_filters", + ), + ], }, ], } diff --git a/aleksis/apps/alsijil/rules.py b/aleksis/apps/alsijil/rules.py index 3812aef2ae31ce9da1e95437816d300ed229f613..2c0e000a28a93f7663abcbcc33d64c1c107b6231 100644 --- a/aleksis/apps/alsijil/rules.py +++ b/aleksis/apps/alsijil/rules.py @@ -1,12 +1,15 @@ from rules import add_perm +from aleksis.core.models import Person from aleksis.core.util.predicates import ( + has_any_object, has_global_perm, has_object_perm, has_person, is_current_person, ) +from .models import PersonalNoteFilter from .util.predicates import ( has_lesson_group_object_perm, has_person_group_object_perm, @@ -28,6 +31,9 @@ view_lesson_predicate = has_person & ( ) 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") @@ -73,6 +79,9 @@ view_week_predicate = has_person & ( ) add_perm("alsijil.view_week", view_week_predicate) +# View week overview in menu +add_perm("alsijil.view_week_menu", has_person) + # View week personal notes view_week_personal_notes_predicate = has_person & ( has_global_perm("alsijil.view_personalnote") @@ -81,6 +90,12 @@ view_week_personal_notes_predicate = has_person & ( ) add_perm("alsijil.view_week_personalnote", view_week_personal_notes_predicate) +# View register absence page +view_register_absence_predicate = has_person & ( + has_any_object("alsijil.register_absence", Person) +) +add_perm("alsijil.view_register_absence", view_register_absence_predicate) + # Register absence register_absence_predicate = has_person & ( has_global_perm("alsijil.register_absence") @@ -99,10 +114,11 @@ view_full_register_predicate = has_person & ( add_perm("alsijil.view_full_register", view_full_register_predicate) # View all personal note filters -list_personal_note_filters_predicate = has_person & has_global_perm( - "alsijil.view_personal_note_filter" +view_personal_note_filters_predicate = has_person & ( + has_global_perm("alsijil.view_personalnotefilter") + | has_any_object("alsijil.view_personalnotefilter", PersonalNoteFilter) ) -add_perm("alsijil.view_personal_note_filters", list_personal_note_filters_predicate) +add_perm("alsijil.view_personal_note_filters", view_personal_note_filters_predicate) # Edit personal note filter edit_personal_note_filter_predicate = has_person & (