def has_room_timetable_perm(user: User, obj: Room) -> bool: """ Check if can access room timetable. Predicate which checks whether the user is allowed to access the requested room timetable. """ return has_global_perm("chronos.view_all_room_timetables")( user) or has_object_perm("chronos.view_room_timetable")(user, obj)
def has_person_timetable_perm(user: User, obj: Person) -> bool: """ Check if can access person timetable. Predicate which checks whether the user is allowed to access the requested person timetable. """ return (user.person == obj or has_global_perm("chronos.view_all_person_timetables")(user) or has_object_perm("core.view_person_timetable")(user, obj))
def has_group_timetable_perm(user: User, obj: Group) -> bool: """ Check if can access group timetable. Predicate which checks whether the user is allowed to access the requested group timetable. """ return (obj in user.person.member_of.all() or user.person.primary_group == obj or obj in user.person.owner_of.all() or has_global_perm("chronos.view_all_group_timetables")(user) or has_object_perm("core.view_group_timetable")(user, obj))
is_lesson_teacher | (is_lesson_original_teacher & is_site_preference_set( "alsijil", "edit_lesson_documentation_as_original_teacher")) | has_global_perm("alsijil.change_lessondocumentation") | has_lesson_group_object_perm("core.edit_lessondocumentation_group")) add_perm("alsijil.edit_lessondocumentation_rule", edit_lesson_documentation_predicate) # View week overview view_week_predicate = has_person & ( is_current_person | is_group_member | is_group_owner | has_global_perm("alsijil.view_week") | has_object_perm("core.view_week_class_register_group")) add_perm("alsijil.view_week_rule", view_week_predicate) # View week overview in menu add_perm("alsijil.view_week_menu_rule", has_person) # View week personal notes view_week_personal_notes_predicate = has_person & ( (is_current_person & is_teacher) | is_group_owner | has_global_perm("alsijil.view_personalnote") | has_object_perm("core.view_personalnote_group")) add_perm("alsijil.view_week_personalnote_rule", view_week_personal_notes_predicate) # Register absence
# View my timetable add_perm("chronos.view_my_timetable_rule", has_person) # View timetable view_timetable_predicate = has_person & has_timetable_perm add_perm("chronos.view_timetable_rule", view_timetable_predicate) # View all lessons per day view_lessons_day_predicate = has_person & has_global_perm( "chronos.view_lessons_day") add_perm("chronos.view_lessons_day_rule", view_lessons_day_predicate) # Edit substition edit_substitution_predicate = has_person & ( has_global_perm("chronos.change_lessonsubstitution") | has_object_perm("chronos.change_lessonsubstitution")) add_perm("chronos.edit_substitution_rule", edit_substitution_predicate) # Delete substitution delete_substitution_predicate = has_person & ( has_global_perm("chronos.delete_lessonsubstitution") | has_object_perm("chronos.delete_lessonsubstitution")) add_perm("chronos.delete_substitution_rule", delete_substitution_predicate) # View substitutions view_substitutions_predicate = has_person & ( has_global_perm("chronos.view_lessonsubstitution") | has_any_object("chronos.view_lessonsubstitution_rule", LessonSubstitution)) add_perm("chronos.view_substitutions_rule", view_substitutions_predicate)