def roles(request): """Merge user's group membership info into template context.""" return { 'is_employee': BaseUser.is_employee(request.user), 'is_external_contractor': BaseUser.is_external_contractor(request.user), 'is_student': BaseUser.is_student(request.user), }
def can_user_view_students_list_for_group(user: BaseUser, group: Group) -> bool: """Tell whether the user is authorized to see students' names and surnames in the given group. """ is_user_proper_employee = (BaseUser.is_employee(user) and not BaseUser.is_external_contractor(user)) is_user_group_teacher = user == group.teacher.user return is_user_proper_employee or is_user_group_teacher
def external_contractor_forbidden(view_func=None, redirect_field_name=REDIRECT_FIELD_NAME, login_url=None): """ Check whether the logged user is either a student or an actual employee (i.e. not external contractor). Redirect to the login page if that's not the case. """ decorator = user_passes_test( lambda u: not BaseUser.is_external_contractor(u), login_url=login_url, redirect_field_name=redirect_field_name) if view_func: return decorator(view_func) return decorator