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))
示例#4
0
    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
示例#5
0
# 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)