Esempio n. 1
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)

        enrollment = get_object_or_404(ProgramEnrollment, hash=kwargs.get('record_hash'))
        user = enrollment.user
        authenticated = not user.is_anonymous
        js_settings = {
            "gaTrackingID": settings.GA_TRACKING_ID,
            "reactGaDebug": settings.REACT_GA_DEBUG,
            "edx_base_url": settings.EDXORG_BASE_URL,
            "authenticated": authenticated,
            "partner_schools": list(PartnerSchool.objects.values_list("id", "name")),
            "hash": enrollment.hash
        }
        context["js_settings_json"] = json.dumps(js_settings)
        context["is_public"] = True
        courses = enrollment.program.course_set.all()
        mmtrack = get_mmtrack(user, enrollment.program)
        combined_grade = CombinedFinalGrade.objects.filter(
            user=user,
            course__in=courses.values_list("id", flat=True)
        ).order_by("updated_on").last()
        context["program_title"] = enrollment.program.title
        context["program_status"] = "completed" if MicromastersProgramCertificate.objects.filter(
            user=user, program=enrollment.program).exists() else "partially"
        context["last_updated"] = combined_grade.updated_on if combined_grade else ""
        context["profile"] = {
            "username": user.username,
            "email": user.email,
            "full_name": user.profile.full_name
        }
        context['courses'] = []
        for course in courses:
            best_grade = mmtrack.get_best_final_grade_for_course(course)
            combined_grade = CombinedFinalGrade.objects.filter(user=user, course=course).first()
            context['courses'].append({
                "title": course.title,
                "edx_course_key": best_grade.course_run.edx_course_key if best_grade else "",
                "attempts": mmtrack.get_course_proctorate_exam_results(course).count(),
                "letter_grade": convert_to_letter(combined_grade.grade) if combined_grade else "",
                "status": "Earned" if get_certificate_url(mmtrack, course) else "Not Earned",
                "date_earned": combined_grade.created_on if combined_grade else "",
                "overall_grade": mmtrack.get_overall_final_grade_for_course(course)
            })

        return context
Esempio n. 2
0
 def test_convert_to_letter(self, grade, letter):
     """Test that convert_to_letter is correct"""
     assert convert_to_letter(grade) == letter
Esempio n. 3
0
 def test_convert_to_letter(self, grade, letter):
     """Test that convert_to_letter is correct"""
     assert convert_to_letter(grade) == letter
Esempio n. 4
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)

        enrollment = self.get_program_enrollment(**kwargs)
        user = enrollment.user

        authenticated = not user.is_anonymous
        share_hash_absolute_url = self.request.build_absolute_uri(
            reverse("shared_grade_records",
                    kwargs=dict(enrollment_id=enrollment.id,
                                record_share_hash=enrollment.share_hash)))
        js_settings = {
            "gaTrackingID":
            settings.GA_TRACKING_ID,
            "reactGaDebug":
            settings.REACT_GA_DEBUG,
            "edx_base_url":
            settings.EDXORG_BASE_URL,
            "authenticated":
            authenticated,
            "partner_schools":
            list(PartnerSchool.objects.values_list("id", "name")),
            "hash":
            enrollment.share_hash,
            "enrollment_id":
            enrollment.id,
            "absolute_record_share_hash":
            "" if not enrollment.share_hash else share_hash_absolute_url
        }
        context["js_settings_json"] = json.dumps(js_settings)
        courses = enrollment.program.course_set.prefetch_related(
            'electivecourse')
        mmtrack = get_mmtrack(user, enrollment.program)
        combined_grade = CombinedFinalGrade.objects.filter(
            user=user, course__in=courses.values_list(
                "id", flat=True)).order_by("updated_on").last()
        context["program_title"] = enrollment.program.title
        context[
            "program_status"] = "completed" if MicromastersProgramCertificate.objects.filter(
                user=user,
                program=enrollment.program).exists() else "partially"
        context[
            "last_updated"] = combined_grade.updated_on if combined_grade else ""
        context["has_electives"] = mmtrack.program.electives_set.exists()
        context["is_owner"] = self.request.user == user
        context["public_jquery"] = True
        context["profile"] = {
            "username": user.username,
            "email": user.email,
            "full_name": user.profile.full_name
        }
        context['courses'] = []
        for course in courses:
            best_grade = mmtrack.get_best_final_grade_for_course(course)
            combined_grade = CombinedFinalGrade.objects.filter(
                user=user, course=course).first()
            context['courses'].append({
                "title":
                course.title,
                "edx_course_key":
                best_grade.course_run.edx_course_key if best_grade else "",
                "attempts":
                mmtrack.get_course_proctorate_exam_results(course).count(),
                "letter_grade":
                convert_to_letter(combined_grade.grade)
                if combined_grade else "",
                "status":
                "Earned"
                if get_certificate_url(mmtrack, course) else "Not Earned",
                "date_earned":
                combined_grade.created_on if combined_grade else "",
                "overall_grade":
                mmtrack.get_overall_final_grade_for_course(course),
                "elective_tag":
                "elective" if (getattr(course, "electivecourse", None)
                               is not None) else "core"
            })

        return context