from student.models import CourseEnrollment from course_modes.models import ( get_cosmetic_verified_display_price ) from courseware.date_summary import ( VerifiedUpgradeDeadlineDate ) def check_and_get_upgrade_link(request, user, course_id): """ For an authenticated user, return a link to allow them to upgrade in the specified course. """ if request.user.is_authenticated(): upgrade_data = VerifiedUpgradeDeadlineDate(None, user, course_id=course_id) if upgrade_data.is_enabled: request.need_to_set_upgrade_cookie = True return upgrade_data return None def get_experiment_user_metadata_context(request, course, user): """ Return a context dictionary with the keys used by the user_metadata.html. """ enrollment_mode = None enrollment_time = None try: enrollment = CourseEnrollment.objects.get(user_id=user.id, course_id=course.id) if enrollment.is_active: enrollment_mode = enrollment.mode enrollment_time = enrollment.created except CourseEnrollment.DoesNotExist: pass # Not enrolled, used the default None values upgrade_data = check_and_get_upgrade_link(request, user, course.id) return { 'upgrade_link': upgrade_data and upgrade_data.link, 'upgrade_price': get_cosmetic_verified_display_price(course), 'enrollment_mode': enrollment_mode, 'enrollment_time': enrollment_time, 'pacing_type': 'self_paced' if course.self_paced else 'instructor_paced', 'upgrade_deadline': upgrade_data and upgrade_data.date, 'course_key': course.id, 'course_start': course.start, 'course_end': course.end, }