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 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 create_test_certificate(course_key): """ Generate the pdf certicate, save it on disk """ (course_display_name, university, teachers, certificate_language) = get_certificate_params(course_key) certificate_filename = make_certificate_filename(course_key, prefix="TEST_") certificate = CertificateInfo(settings.STUDENT_NAME_FOR_TEST_CERTIFICATE, course_display_name, university, certificate_filename, teachers, language=certificate_language) certificate.generate() return certificate
def create_test_certificate(course_key): """ Generate the pdf certicate, save it on disk """ ( course_display_name, university, teachers, certificate_language ) = get_certificate_params(course_key) certificate_filename = make_certificate_filename(course_key, prefix="TEST_") certificate = CertificateInfo(settings.STUDENT_NAME_FOR_TEST_CERTIFICATE, course_display_name, university, certificate_filename, teachers, language=certificate_language) certificate.generate() return certificate
def generate_fun_certificate(student, course_id, course_display_name, course, teachers, organization_display_name, organization_logo, certificate_base_filename,ignore_grades, new_grade): """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 if ignore_grades: grade['grade'] = 'A' grade['percent'] = 100.0 if new_grade: grade['grade'] = 'A' cert.grade = new_grade cert.save() if grade['grade'] is None: cert.status = status.notpassing else: key = make_hashkey(random.random()) cert.key = key info = CertificateInfo() info.full_name = student_name info.course_name = course_display_name info.teachers = teachers info.organization = organization_display_name info.organization_logo = organization_logo certificate_filename = certificate_base_filename + key + ".pdf"; info.pdf_file_name = os.path.join( settings.CERTIFICATES_DIRECTORY, certificate_filename) if info.generate(): cert.status = status.downloadable cert.download_url = settings.CERTIFICATE_BASE_URL + certificate_filename else: cert.status = status.error cert.error_reason = "Error while generating PDF file" 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 regenerate_certificate(course_id, user, certificate): """Generate or Regenerate PDF and attach to already existing GeneratedCertificate, then force state to 'downloadable'. """ (course_display_name, university, teachers, certificate_language) = get_certificate_params(course_id) if certificate.status != CertificateStatuses.downloadable: certificate.key = make_certificate_hash_key() certificate.mode = GeneratedCertificate.MODES.honor certificate_filename = make_certificate_filename(course_id, key=certificate.key) CertificateInfo(user.profile.name, course_display_name, university, certificate_filename, teachers, language=certificate_language).generate() set_certificate_filename(certificate, certificate_filename) certificate.save()