def create_test_certificate(course, course_key, university): """ Generate the pdf certicate, save it on disk """ if university.certificate_logo: logo_path = os.path.join(university.certificate_logo.url, university.certificate_logo.path) else: logo_path = None teachers = get_teachers_list_from_course(course_key) certificate_language = Course.get_course_language(unicode(course_key)) key = make_hashkey(random.random()) filename = "TEST_attestation_suivi_%s_%s.pdf" % ( course.id.to_deprecated_string().replace('/', '_'), key ) certificate = CertificateInfo(settings.STUDENT_NAME_FOR_TEST_CERTIFICATE, course.display_name, university.name, logo_path, filename, teachers, language=certificate_language ) certificate.generate() return certificate
def get_certificate_params(course_key): """Returns required information to pass to CertificateInfo to create certificate. Args: course_key (CourseKey) returns: course_display_name: course name university: University model or None teachers: queryset of certificate teachers certificate_language: language """ course = modulestore().get_course(course_key, depth=2) course_display_name = unicode(course.display_name).encode('utf-8') try: university = get_university_attached_to_course(course_key) except University.DoesNotExist: # Note: this is probably a very bad idea, since we are going to use the # university.name attribute in the rest of the certificate generation. university = None teachers = get_teachers_list_from_course(course_key) certificate_language = Course.get_course_language(unicode(course_key)) return (course_display_name, university, teachers, certificate_language)
def generate_fun_certificate(student, course_id, course_display_name, course, teachers, organization_display_name, organization_logo, certificate_base_filename, ignore_grades, new_grade, fail_flag): """Generates a certificate for one student and one course.""" profile = UserProfile.objects.get(user=student) student_name = unicode(profile.name).encode('utf-8') # grade the student cert, _created = GeneratedCertificate.objects.get_or_create( user=student, course_id=course_id ) request.user = student grade = grades.grade(student, request, course) cert.grade = grade['percent'] cert.user = student cert.course_id = course_id cert.name = profile.name fail = False if ignore_grades: cert.grade = 1 elif new_grade: fail = fail_flag cert.grade = new_grade elif grade['grade'] is None: ## edx grading fail = True if fail: cert.status = status.notpassing else: key = make_hashkey(random.random()) cert.key = key certificate_filename = certificate_base_filename + key + ".pdf" certificate_language = Course.get_course_language(unicode(course_id)) info = CertificateInfo( student_name, course_display_name, organization_display_name, organization_logo, certificate_filename, teachers, language=certificate_language ) info.generate() cert.status = status.downloadable cert.download_url = settings.CERTIFICATE_BASE_URL + certificate_filename cert.save() return cert.status
def generate_fun_certificate(student, course, teachers, university): """Generates a certificate for one student and one course.""" # grade the student cert, _created = GeneratedCertificate.objects.get_or_create( user=student, course_id=course.id ) # TODO We need to create a request object manually. It's very ugly and we should # do something about it. request = RequestFactory().get('/') request.session = {} request.user = student grade = grades.grade(student, request, course) cert.grade = grade['percent'] cert.name = student.profile.name if grade['grade'] is None: cert.status = CertificateStatuses.notpassing else: key = make_certificate_hash_key() certificate_filename = "attestation_suivi_{}_{}.pdf".format( (unicode(course.id).replace('/', '_')), key ) cert.key = key certificate_language = Course.get_course_language(unicode(course.id)) course_display_name = unicode(course.display_name).encode('utf-8') CertificateInfo( student.profile.name, course_display_name, university, certificate_filename, teachers, language=certificate_language ).generate() set_certificate_filename(cert, certificate_filename) cert.save() logger.info("Honor certificate status for student {}: {}".format(student.username, cert.status)) trigger_tracking_log(cert, course, student) return cert.status
def generate_fun_certificate(student, course, teachers, university): """Generates a certificate for one student and one course.""" # grade the student cert, _created = GeneratedCertificate.objects.get_or_create( user=student, course_id=course.id) # TODO We need to create a request object manually. It's very ugly and we should # do something about it. request = RequestFactory().get('/') request.session = {} request.user = student grade = grades.grade(student, request, course) cert.grade = grade['percent'] cert.name = student.profile.name if grade['grade'] is None: cert.status = CertificateStatuses.notpassing else: key = make_certificate_hash_key() certificate_filename = "attestation_suivi_{}_{}.pdf".format( (unicode(course.id).replace('/', '_')), key) cert.key = key certificate_language = Course.get_course_language(unicode(course.id)) course_display_name = unicode(course.display_name).encode('utf-8') CertificateInfo(student.profile.name, course_display_name, university, certificate_filename, teachers, language=certificate_language).generate() set_certificate_filename(cert, certificate_filename) cert.save() logger.info("Honor certificate status for student {}: {}".format( student.username, cert.status)) trigger_tracking_log(cert, course, student) return cert.status