def get_current_repo_file(request, course_identifier, path): course = get_object_or_404(Course, identifier=course_identifier) role, participation = get_role_and_participation( request, course) from course.views import check_course_state check_course_state(course, role) from course.content import get_course_commit_sha commit_sha = get_course_commit_sha(course, participation) role, participation = get_role_and_participation(request, course) repo = get_course_repo(course) from course.content import is_repo_file_public if not is_repo_file_public(repo, commit_sha, path): raise PermissionDenied() from course.content import get_repo_blob_data_cached try: data = get_repo_blob_data_cached( repo, path, commit_sha.encode()) except ObjectDoesNotExist: raise http.Http404() from mimetypes import guess_type content_type, _ = guess_type(path) return http.HttpResponse(data, content_type=content_type)
def get_current_repo_file(request, course_identifier, path): course = get_object_or_404(Course, identifier=course_identifier) role, participation = get_role_and_participation(request, course) from course.views import check_course_state check_course_state(course, role) from course.content import get_course_commit_sha commit_sha = get_course_commit_sha(course, participation) role, participation = get_role_and_participation(request, course) repo = get_course_repo(course) from course.content import is_repo_file_public if not is_repo_file_public(repo, commit_sha, path): raise PermissionDenied() from course.content import get_repo_blob_data_cached try: data = get_repo_blob_data_cached(repo, path, commit_sha.encode()) except ObjectDoesNotExist: raise http.Http404() from mimetypes import guess_type content_type, _ = guess_type(path) return http.HttpResponse(data, content_type=content_type)
def home(request): courses_and_descs_and_invalid_flags = [] for course in Course.objects.filter(listed=True): repo = get_course_repo(course) desc = get_course_desc(repo, course, course.active_git_commit_sha.encode()) role, participation = get_role_and_participation(request, course) show = True if course.hidden: if role not in [ participation_role.teaching_assistant, participation_role.instructor ]: show = False if not course.valid: if role != participation_role.instructor: show = False if show: courses_and_descs_and_invalid_flags.append( (course, desc, not course.valid)) def course_sort_key(entry): course, desc, invalid_flag = entry return course.identifier courses_and_descs_and_invalid_flags.sort(key=course_sort_key) return render(request, "course/home.html", { "courses_and_descs_and_invalid_flags": courses_and_descs_and_invalid_flags })
def get_repo_file(request, course_identifier, commit_sha, path): course = get_object_or_404(Course, identifier=course_identifier) role, participation = get_role_and_participation(request, course) return get_repo_file_backend(request, course, role, participation, commit_sha, path)
def get_media(request, course_identifier, commit_sha, media_path): course = get_object_or_404(Course, identifier=course_identifier) role, participation = get_role_and_participation(request, course) repo = get_course_repo(course) return get_repo_file_response(repo, "media/" + media_path, commit_sha)
def home(request): courses_and_descs_and_invalid_flags = [] for course in Course.objects.all(): repo = get_course_repo(course) desc = get_course_desc(repo, course, course.active_git_commit_sha.encode()) role, participation = get_role_and_participation(request, course) show = True if course.hidden: if role not in [participation_role.teaching_assistant, participation_role.instructor]: show = False if not course.valid: if role != participation_role.instructor: show = False if show: courses_and_descs_and_invalid_flags.append( (course, desc, not course.valid)) def course_sort_key(entry): course, desc, invalid_flag = entry return course.identifier courses_and_descs_and_invalid_flags.sort(key=course_sort_key) return render(request, "course/home.html", { "courses_and_descs_and_invalid_flags": courses_and_descs_and_invalid_flags })
def get_media(request, course_identifier, commit_sha, media_path): course = get_object_or_404(Course, identifier=course_identifier) role, participation = get_role_and_participation(request, course) repo = get_course_repo(course) return get_repo_file_response(repo, "media/" + media_path, commit_sha.encode())
def get_repo_file(request, course_identifier, commit_sha, path): course = get_object_or_404(Course, identifier=course_identifier) role, participation = get_role_and_participation(request, course) return get_repo_file_backend( request, course, role, participation, commit_sha, path)
def get_current_repo_file(request, course_identifier, path): course = get_object_or_404(Course, identifier=course_identifier) role, participation = get_role_and_participation(request, course) from course.content import get_course_commit_sha commit_sha = get_course_commit_sha(course, participation) return get_repo_file_backend(request, course, role, participation, commit_sha, path)
def get_current_repo_file(request, course_identifier, path): course = get_object_or_404(Course, identifier=course_identifier) role, participation = get_role_and_participation( request, course) from course.content import get_course_commit_sha commit_sha = get_course_commit_sha(course, participation) return get_repo_file_backend( request, course, role, participation, commit_sha, path)
def current_repo_file_etag_func(request, course_identifier, path): course = get_object_or_404(Course, identifier=course_identifier) role, participation = get_role_and_participation(request, course) from course.views import check_course_state check_course_state(course, role) from course.content import get_course_commit_sha commit_sha = get_course_commit_sha(course, participation) return ":".join([course_identifier, commit_sha, path])
def current_repo_file_etag_func(request, course_identifier, path): course = get_object_or_404(Course, identifier=course_identifier) role, participation = get_role_and_participation( request, course) from course.views import check_course_state check_course_state(course, role) from course.content import get_course_commit_sha commit_sha = get_course_commit_sha(course, participation) return ":".join([course_identifier, commit_sha.decode(), path])
def get_media(request, course_identifier, commit_sha, media_path): course = get_object_or_404(Course, identifier=course_identifier) role, participation = get_role_and_participation(request, course) repo = get_course_repo(course) from course.content import get_repo_blob_data_cached try: data = get_repo_blob_data_cached(repo, "media/" + media_path, commit_sha.encode()) except ObjectDoesNotExist: raise http.Http404() from mimetypes import guess_type content_type, _ = guess_type(media_path) return http.HttpResponse(data, content_type=content_type)
def get_media(request, course_identifier, commit_sha, media_path): course = get_object_or_404(Course, identifier=course_identifier) role, participation = get_role_and_participation(request, course) repo = get_course_repo(course) from course.content import get_repo_blob_data_cached try: data = get_repo_blob_data_cached( repo, "media/"+media_path, commit_sha.encode()) except ObjectDoesNotExist: raise http.Http404() from mimetypes import guess_type content_type = guess_type(media_path) return http.HttpResponse(data, content_type=content_type)
def home(request): now_datetime = get_now_or_fake_time(request) current_courses = [] past_courses = [] for course in Course.objects.filter(listed=True): role, participation = get_role_and_participation(request, course) show = True if course.hidden: if role not in [participation_role.teaching_assistant, participation_role.instructor]: show = False if not course.listed: show = False if show: if (course.end_date is None or now_datetime.date() <= course.end_date): current_courses.append(course) else: past_courses.append(course) def course_sort_key_minor(course): return course.number if course.number is not None else "" def course_sort_key_major(course): return (course.start_date if course.start_date is not None else now_datetime.date()) current_courses.sort(key=course_sort_key_minor) past_courses.sort(key=course_sort_key_minor) current_courses.sort(key=course_sort_key_major, reverse=True) past_courses.sort(key=course_sort_key_major, reverse=True) return render(request, "course/home.html", { "current_courses": current_courses, "past_courses": past_courses, })
def home(request): now_datetime = get_now_or_fake_time(request) current_courses = [] past_courses = [] for course in Course.objects.filter(listed=True): role, participation = get_role_and_participation(request, course) show = True if course.hidden: if role not in [ participation_role.teaching_assistant, participation_role.instructor ]: show = False if show: if (course.end_date is None or now_datetime.date() <= course.end_date): current_courses.append(course) else: past_courses.append(course) def course_sort_key_minor(course): return course.number if course.number is not None else "" def course_sort_key_major(course): return (course.start_date if course.start_date is not None else now_datetime.date()) current_courses.sort(key=course_sort_key_minor) past_courses.sort(key=course_sort_key_minor) current_courses.sort(key=course_sort_key_major, reverse=True) past_courses.sort(key=course_sort_key_major, reverse=True) return render(request, "course/home.html", { "current_courses": current_courses, "past_courses": past_courses, })