Beispiel #1
0
def index(request):
    semesters = Semester.get_all_with_published_unarchived_results()
    evaluations = Evaluation.objects.filter(course__semester__in=semesters,
                                            state='published')
    evaluations = [
        evaluation for evaluation in evaluations
        if evaluation.can_user_see_evaluation(request.user)
    ]

    if request.user.is_reviewer:
        additional_evaluations = get_evaluations_with_prefetched_data(
            Evaluation.objects.filter(
                course__semester__in=semesters,
                state__in=['in_evaluation', 'evaluated', 'reviewed']))
        additional_evaluations = get_evaluations_with_course_result_attributes(
            additional_evaluations)
        evaluations += additional_evaluations

    evaluations.sort(
        key=lambda evaluation:
        (evaluation.course.semester.pk, evaluation.full_name
         ))  # evaluations must be sorted for regrouping them in the template

    evaluation_pks = [evaluation.pk for evaluation in evaluations]
    degrees = Degree.objects.filter(
        courses__evaluations__pk__in=evaluation_pks).distinct()
    course_types = CourseType.objects.filter(
        courses__evaluations__pk__in=evaluation_pks).distinct()
    template_data = dict(
        evaluations=evaluations,
        degrees=degrees,
        course_types=course_types,
        semesters=semesters,
    )
    return render(request, "results_index.html", template_data)
Beispiel #2
0
def index(request):
    semesters = Semester.get_all_with_published_unarchived_results()
    courses = Course.objects.filter(semester__in=semesters, state='published')
    courses = [
        course for course in courses
        if course.can_user_see_course(request.user)
    ]

    if request.user.is_reviewer:
        additional_courses = Course.objects.filter(
            semester__in=semesters,
            state__in=['in_evaluation', 'evaluated', 'reviewed'])
        courses += get_courses_with_prefetched_data(additional_courses)

    course_pks = [course.pk for course in courses]
    degrees = Degree.objects.filter(courses__pk__in=course_pks).distinct()
    course_types = CourseType.objects.filter(
        courses__pk__in=course_pks).distinct()
    template_data = dict(
        courses=courses,
        degrees=degrees,
        course_types=course_types,
        semesters=semesters,
    )
    return render(request, "results_index.html", template_data)
Beispiel #3
0
def index(request):
    semesters = Semester.get_all_with_published_unarchived_results()
    evaluations = Evaluation.objects.filter(course__semester__in=semesters, state='published')
    evaluations = [evaluation for evaluation in evaluations if evaluation.can_be_seen_by(request.user)]

    if request.user.is_reviewer:
        additional_evaluations = get_evaluations_with_prefetched_data(
            Evaluation.objects.filter(
                course__semester__in=semesters,
                state__in=['in_evaluation', 'evaluated', 'reviewed']
            )
        )
        additional_evaluations = get_evaluations_with_course_result_attributes(additional_evaluations)
        evaluations += additional_evaluations

    evaluations.sort(key=lambda evaluation: (evaluation.course.semester.pk, evaluation.full_name))  # evaluations must be sorted for regrouping them in the template

    evaluation_pks = [evaluation.pk for evaluation in evaluations]
    degrees = Degree.objects.filter(courses__evaluations__pk__in=evaluation_pks).distinct()
    course_types = CourseType.objects.filter(courses__evaluations__pk__in=evaluation_pks).distinct()
    template_data = dict(
        evaluations=evaluations,
        degrees=degrees,
        course_types=course_types,
        semesters=semesters,
    )
    return render(request, "results_index.html", template_data)
Beispiel #4
0
def index(request):
    semesters = Semester.get_all_with_published_unarchived_results()
    evaluations = Evaluation.objects.filter(course__semester__in=semesters,
                                            state='published')
    evaluations = [
        evaluation for evaluation in evaluations
        if evaluation.can_user_see_evaluation(request.user)
    ]

    if request.user.is_reviewer:
        additional_evaluations = Evaluation.objects.filter(
            course__semester__in=semesters,
            state__in=['in_evaluation', 'evaluated', 'reviewed'])
        evaluations += get_evaluations_with_prefetched_data(
            additional_evaluations)

    evaluation_pks = [evaluation.pk for evaluation in evaluations]
    degrees = Degree.objects.filter(
        courses__evaluation__pk__in=evaluation_pks).distinct()
    course_types = CourseType.objects.filter(
        courses__evaluation__pk__in=evaluation_pks).distinct()
    template_data = dict(
        evaluations=evaluations,
        degrees=degrees,
        course_types=course_types,
        semesters=semesters,
    )
    return render(request, "results_index.html", template_data)
Beispiel #5
0
def include_navbar(user, language):
    return {
        'user': user,
        'language': language,
        'published_result_semesters': Semester.get_all_with_published_unarchived_results(),
        'result_semesters': Semester.get_all_with_unarchived_results(),
        'grade_document_semesters': Semester.objects.filter(grade_documents_are_deleted=False),
    }
Beispiel #6
0
def include_navbar(user, language):
    return {
        "user": user,
        "current_language": language,
        "languages": LANGUAGES,
        "published_result_semesters": Semester.get_all_with_published_unarchived_results(),
        "result_semesters": Semester.get_all_with_unarchived_results(),
        "grade_document_semesters": Semester.objects.filter(grade_documents_are_deleted=False),
        "debug": DEBUG,
    }
def include_navbar(user, language):
    return {
        'user':
        user,
        'language':
        language,
        'published_result_semesters':
        Semester.get_all_with_published_unarchived_results(),
        'result_semesters':
        Semester.get_all_with_unarchived_results(),
        'grade_document_semesters':
        Semester.objects.filter(grade_documents_are_deleted=False),
    }
Beispiel #8
0
def index(request):
    semesters = Semester.get_all_with_published_unarchived_results()
    evaluations = Evaluation.objects.filter(course__semester__in=semesters,
                                            state=Evaluation.State.PUBLISHED)
    evaluations = evaluations.select_related("course", "course__semester")
    evaluations = [
        evaluation for evaluation in evaluations
        if evaluation.can_be_seen_by(request.user)
    ]

    if request.user.is_reviewer:
        additional_evaluations = get_evaluations_with_prefetched_data(
            Evaluation.objects.filter(
                course__semester__in=semesters,
                state__in=[
                    Evaluation.State.IN_EVALUATION, Evaluation.State.EVALUATED,
                    Evaluation.State.REVIEWED
                ],
            ))
        additional_evaluations = get_evaluations_with_course_result_attributes(
            additional_evaluations)
        evaluations += additional_evaluations

    # put evaluations into a dict that maps from course to a list of evaluations.
    # this dict is sorted by course.pk (important for the zip below)
    # (this relies on python 3.7's guarantee that the insertion order of the dict is preserved)
    evaluations.sort(key=lambda evaluation: evaluation.course.pk)
    courses_and_evaluations = unordered_groupby(
        (evaluation.course, evaluation) for evaluation in evaluations)

    course_pks = [course.pk for course in courses_and_evaluations.keys()]

    # annotate each course in courses with num_evaluations
    annotated_courses = (Course.objects.filter(pk__in=course_pks).annotate(
        num_evaluations=Count("evaluations")).order_by("pk").defer())
    for course, annotated_course in zip(courses_and_evaluations.keys(),
                                        annotated_courses):
        course.num_evaluations = annotated_course.num_evaluations

    degrees = Degree.objects.filter(courses__pk__in=course_pks).distinct()
    course_types = CourseType.objects.filter(
        courses__pk__in=course_pks).distinct()
    template_data = dict(
        courses_and_evaluations=courses_and_evaluations.items(),
        degrees=degrees,
        course_types=course_types,
        semesters=semesters,
    )
    return render(request, "results_index.html", template_data)
Beispiel #9
0
def index(request):
    semesters = Semester.get_all_with_published_unarchived_results()
    evaluations = Evaluation.objects.filter(course__semester__in=semesters,
                                            state='published')
    evaluations = evaluations.select_related('course', 'course__semester')
    evaluations = [
        evaluation for evaluation in evaluations
        if evaluation.can_be_seen_by(request.user)
    ]

    if request.user.is_reviewer:
        additional_evaluations = get_evaluations_with_prefetched_data(
            Evaluation.objects.filter(
                course__semester__in=semesters,
                state__in=['in_evaluation', 'evaluated', 'reviewed']))
        additional_evaluations = get_evaluations_with_course_result_attributes(
            additional_evaluations)
        evaluations += additional_evaluations

    # put evaluations into a dict that maps from course to a list of evaluations.
    # this dict is sorted by course.pk (important for the zip below)
    # (this relies on python 3.7's guarantee that the insertion order of the dict is preserved)
    evaluations.sort(key=lambda evaluation: evaluation.course.pk)

    courses_and_evaluations = defaultdict(list)
    for evaluation in evaluations:
        courses_and_evaluations[evaluation.course].append(evaluation)

    course_pks = list([course.pk for course in courses_and_evaluations.keys()])

    # annotate each course in courses with num_evaluations
    annotated_courses = Course.objects.filter(pk__in=course_pks).annotate(
        num_evaluations=Count('evaluations')).order_by('pk').defer()
    for course, annotated_course in zip(courses_and_evaluations.keys(),
                                        annotated_courses):
        course.num_evaluations = annotated_course.num_evaluations

    degrees = Degree.objects.filter(courses__pk__in=course_pks).distinct()
    course_types = CourseType.objects.filter(
        courses__pk__in=course_pks).distinct()
    template_data = dict(
        courses_and_evaluations=courses_and_evaluations.items(),
        degrees=degrees,
        course_types=course_types,
        semesters=semesters,
    )
    return render(request, "results_index.html", template_data)
Beispiel #10
0
def index(request):
    semesters = Semester.get_all_with_published_unarchived_results()
    courses = Course.objects.filter(semester__in=semesters, state='published')
    courses = [course for course in courses if course.can_user_see_course(request.user)]

    if request.user.is_reviewer:
        additional_courses = Course.objects.filter(semester__in=semesters, state__in=['in_evaluation', 'evaluated', 'reviewed'])
        courses += get_courses_with_prefetched_data(additional_courses)

    course_pks = [course.pk for course in courses]
    degrees = Degree.objects.filter(courses__pk__in=course_pks).distinct()
    course_types = CourseType.objects.filter(courses__pk__in=course_pks).distinct()
    template_data = dict(
        courses=courses,
        degrees=degrees,
        course_types=sorted(course_types, key=lambda course_type: course_type.name),
        semesters=semesters,
    )
    return render(request, "results_index.html", template_data)