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

Reformat predicates

parent 04626927
No related branches found
No related tags found
1 merge request!113Resolve "Review permissions"
Pipeline #10490 failed
......@@ -13,28 +13,46 @@ from .chronos_helpers import get_classes, get_rooms, get_teachers
@predicate
def has_timetable_perm(user: User, obj: Model) -> bool:
"""Predicate which checks whether the user is allowed to access the requested timetable."""
if type(obj) is Group:
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)
)
elif type(obj) is Person:
return (
user.person == obj
or has_global_perm("chronos.view_all_person_timetables")(user)
or has_object_perm("core.view_person_timetable")(user, obj)
)
elif type(obj) is Room:
return has_global_perm("chronos.view_all_room_timetables")(user) or has_object_perm(
"chronos.view_room_timetable"
)(user, obj)
if isinstance(obj, Group):
return has_group_timetable_perm(user, obj)
elif isinstance(obj, Person):
return has_person_timetable_perm(user, obj)
elif isinstance(obj, Room):
return has_room_timetable_perm(user, obj)
else:
return False
@predicate
def has_group_timetable_perm(user: User, obj: Group) -> bool:
"""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)
)
@predicate
def has_person_timetable_perm(user: User, obj: Person) -> bool:
"""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)
)
@predicate
def has_room_timetable_perm(user: User, obj: Room) -> bool:
"""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)
@predicate
def has_any_timetable_object(user: User) -> bool:
"""Predicate which checks whether there exists a timetable that the user is allowed to access."""
......
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