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, is_group_member, is_group_owner, is_lesson_parent_group_owner, is_lesson_participant, is_lesson_teacher, is_person_group_owner, ) # View lesson view_lesson_predicate = has_person & ( has_global_perm("alsijil.view_lesson") | is_lesson_teacher | is_lesson_participant | is_lesson_parent_group_owner | has_lesson_group_object_perm("core.view_week_class_register_group") ) 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) # Edit lesson personal notes edit_lesson_personal_notes_predicate = has_person & ( has_global_perm("alsijil.change_personalnote") | has_lesson_group_object_perm("core.edit_personalnote_group") | is_lesson_teacher ) add_perm("alsijil.edit_personalnote", edit_lesson_personal_notes_predicate) # View lesson documentation view_lesson_documentation_predicate = has_person & ( has_global_perm("alsijil.view_lessondocumentation") | has_lesson_group_object_perm("core.view_lessondocumentation_group") | is_lesson_teacher | is_lesson_parent_group_owner | is_lesson_participant ) add_perm("alsijil.view_lessondocumentation", view_lesson_documentation_predicate) # Edit lesson documentation edit_lesson_documentation_predicate = has_person & ( has_global_perm("alsijil.change_lessondocumentation") | has_lesson_group_object_perm("core.edit_lessondocumentation_group") | is_lesson_teacher ) add_perm("alsijil.edit_lessondocumentation", edit_lesson_documentation_predicate) # View week overview view_week_predicate = has_person & ( has_global_perm("alsijil.view_week") | has_object_perm("core.view_week_class_register_group") | is_group_member | is_group_owner | is_current_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") | has_object_perm("core.view_personalnote_group") | is_group_owner ) 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") | has_person_group_object_perm("core.register_absence_group") | has_object_perm("core.register_absence_person") | is_person_group_owner ) add_perm("alsijil.register_absence", register_absence_predicate) # View full register for group view_full_register_predicate = has_person & ( has_global_perm("alsijil.view_full_register") | has_object_perm("core.view_full_register_group") | is_group_owner ) add_perm("alsijil.view_full_register", view_full_register_predicate) # View all personal note filters 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", view_personal_note_filters_predicate) # Edit personal note filter edit_personal_note_filter_predicate = has_person & ( has_global_perm("alsijil.change_personalnotefilter") | has_object_perm("alsijil.change_personalnotefilter") ) add_perm("alsijil.edit_personal_note_filter", edit_personal_note_filter_predicate) # Delete personal note filter delete_personal_note_filter_predicate = has_person & ( has_global_perm("alsijil.delete_personalnotefilter") | has_object_perm("alsijil.delete_personalnotefilter") ) add_perm("alsijil.delete_personal_note_filter", delete_personal_note_filter_predicate)