def get_repo_file_backend(request, course, role, participation, commit_sha, path): """ Check if a file should be accessible. Then call for it if the permission is not denied. Order is important here. An in-exam request takes precedence. Note: an access_role of "public" is equal to "unenrolled" """ # check to see if the course is hidden from course.views import check_course_state check_course_state(course, role) # retrieve local path for the repo for the course repo = get_course_repo(course) # set access to public (or unenrolled), student, etc access_kind = role if request.relate_exam_lockdown: access_kind = "in_exam" from course.content import is_repo_file_accessible_as if not is_repo_file_accessible_as(access_kind, repo, commit_sha, path): raise PermissionDenied() return get_repo_file_response(repo, path, commit_sha)
def get_repo_file_backend(request, course, role, participation, commit_sha, path): from course.views import check_course_state check_course_state(course, role) repo = get_course_repo(course) access_kind = "public" if request.relate_exam_lockdown: access_kind = "in_exam" from course.content import is_repo_file_accessible_as if not is_repo_file_accessible_as(access_kind, repo, commit_sha, path): raise PermissionDenied() return get_repo_file_response(repo, path, commit_sha)
def get_repo_file_backend(request, course, role, participation, commit_sha, path): from course.views import check_course_state check_course_state(course, role) repo = get_course_repo(course) access_kind = "public" if request.relate_exam_lockdown: access_kind = "in_exam" from course.content import is_repo_file_accessible_as if not is_repo_file_accessible_as(access_kind, repo, commit_sha, path): raise PermissionDenied() return get_repo_file_response(repo, path, commit_sha)
def get_repo_file_backend( request, # type: http.HttpRequest course, # type: Course participation, # type: Optional[Participation] commit_sha, # type: bytes path, # type: str ): # type: (...) -> http.HttpResponse # noqa """ Check if a file should be accessible. Then call for it if the permission is not denied. Order is important here. An in-exam request takes precedence. Note: an access_role of "public" is equal to "unenrolled" """ # check to see if the course is hidden check_course_state(course, participation) # set access to public (or unenrolled), student, etc if request.relate_exam_lockdown: access_kinds = ["in_exam"] else: from course.enrollment import get_participation_permissions access_kinds = [ arg for perm, arg in get_participation_permissions( course, participation) if perm == pperm.access_files_for and arg is not None ] from course.content import is_repo_file_accessible_as # retrieve local path for the repo for the course with get_course_repo(course) as repo: if not is_repo_file_accessible_as(access_kinds, repo, commit_sha, path): raise PermissionDenied() return get_repo_file_response(repo, path, commit_sha)
def get_repo_file_backend( request, # type: http.HttpRequest course, # type: Course participation, # type: Optional[Participation] commit_sha, # type: bytes path, # type: str ): # type: (...) -> http.HttpResponse # noqa """ Check if a file should be accessible. Then call for it if the permission is not denied. Order is important here. An in-exam request takes precedence. Note: an access_role of "public" is equal to "unenrolled" """ # check to see if the course is hidden check_course_state(course, participation) # retrieve local path for the repo for the course repo = get_course_repo(course) # set access to public (or unenrolled), student, etc if request.relate_exam_lockdown: access_kinds = ["in_exam"] else: from course.enrollment import get_participation_permissions access_kinds = [ arg for perm, arg in get_participation_permissions(course, participation) if perm == pperm.access_files_for and arg is not None] from course.content import is_repo_file_accessible_as if not is_repo_file_accessible_as(access_kinds, repo, commit_sha, path): raise PermissionDenied() return get_repo_file_response(repo, path, commit_sha)