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