Skip to content
Snippets Groups Projects
Commit 6e9a0f60 authored by Hangzhi Yu's avatar Hangzhi Yu
Browse files

Add menu validators using rules

parent 07ca4f09
No related branches found
No related tags found
1 merge request!49Resolve "Add rules and permissions"
......@@ -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",
),
],
},
],
}
......
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 & (
......
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