def enable_auto_certificate_generation(apps, schema_editor): """ add an enabled CertificateGenerationConfiguration and enable student-generated certificates on all courses by setting the enabled bit """ # not sure why I'm not getting the certificates app, so we'll force it from certificates.models import CertificateGenerationConfiguration, CertificateGenerationCourseSetting apps.load_app('certificates') apps.register_models('certificates', CertificateGenerationConfiguration) apps.register_models('certificates', CertificateGenerationCourseSetting) CertificateGenerationConfiguration = apps.get_model( "certificates", "CertificateGenerationConfiguration") ccg = CertificateGenerationConfiguration( enabled=1) # configuration model. just add a new one ccg.save() CertificateGenerationCourseSetting = apps.get_model( "certificates", "CertificateGenerationCourseSetting") courses = modulestore().get_courses() for course in courses: key = course.location.course_key ccs, created = CertificateGenerationCourseSetting.objects.get_or_create( course_key=key, enabled=1) if not created: ccs.enabled = 1 ccs.save()
def test_view_certificate_link(self): """ If certificate web view is enabled then certificate web view button should appear for user who certificate is available/generated """ certificate = GeneratedCertificateFactory.create( user=self.user, course_id=self.course.id, status=CertificateStatuses.downloadable, download_url="http://www.example.com/certificate.pdf", mode='honor' ) # Enable the feature, but do not enable it for this course CertificateGenerationConfiguration(enabled=True).save() # Enable certificate generation for this course certs_api.set_cert_generation_enabled(self.course.id, True) #course certificate configurations certificates = [ { 'id': 1, 'name': 'Name 1', 'description': 'Description 1', 'course_title': 'course_title_1', 'signatories': [], 'version': 1, 'is_active': True } ] self.course.certificates = {'certificates': certificates} self.course.cert_html_view_enabled = True self.course.save() self.store.update_item(self.course, self.user.id) resp = views.progress(self.request, course_id=unicode(self.course.id)) self.assertContains(resp, u"View Certificate") self.assertContains(resp, u"You can keep working for a higher grade") cert_url = certs_api.get_certificate_url( user_id=self.user.id, course_id=self.course.id ) self.assertContains(resp, cert_url) # when course certificate is not active certificates[0]['is_active'] = False self.store.update_item(self.course, self.user.id) resp = views.progress(self.request, course_id=unicode(self.course.id)) self.assertNotContains(resp, u"View Your Certificate") self.assertNotContains(resp, u"You can now view your certificate") self.assertContains(resp, u"We're creating your certificate.")
def test_generate_cert_config(self): resp = views.progress(self.request, course_id=unicode(self.course.id)) self.assertNotContains(resp, 'Request Certificate') # Enable the feature, but do not enable it for this course CertificateGenerationConfiguration(enabled=True).save() resp = views.progress(self.request, course_id=unicode(self.course.id)) self.assertNotContains(resp, 'Request Certificate') # Enable certificate generation for this course certs_api.set_cert_generation_enabled(self.course.id, True) resp = views.progress(self.request, course_id=unicode(self.course.id)) self.assertNotContains(resp, 'Request Certificate')
def test_view_certificate_link_hidden(self): """ If certificate web view is disabled then certificate web view button should not appear for user who certificate is available/generated """ GeneratedCertificateFactory.create( user=self.user, course_id=self.course.id, status=CertificateStatuses.downloadable, download_url="http://www.example.com/certificate.pdf", mode='honor' ) # Enable the feature, but do not enable it for this course CertificateGenerationConfiguration(enabled=True).save() # Enable certificate generation for this course certs_api.set_cert_generation_enabled(self.course.id, True) resp = views.progress(self.request, course_id=unicode(self.course.id)) self.assertContains(resp, u"Download Your Certificate")
def test_resp_with_generate_cert_config_enabled(self): CertificateGenerationConfiguration(enabled=True).save() resp = views.progress(self.request, course_id=unicode(self.course.id)) self.assertEqual(resp.status_code, 200)