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
def test_convert_to_letter(self, grade, letter): """Test that convert_to_letter is correct""" assert convert_to_letter(grade) == letter
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