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),
    }
예제 #2
0
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
예제 #3
0
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