diff --git a/lms/djangoapps/certificates/migrations/0015_add_masters_choice.py b/lms/djangoapps/certificates/migrations/0015_add_masters_choice.py new file mode 100644 index 0000000000..565d493d2b --- /dev/null +++ b/lms/djangoapps/certificates/migrations/0015_add_masters_choice.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.20 on 2019-04-04 15:14 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('certificates', '0014_change_eligible_certs_manager'), + ] + + operations = [ + migrations.AlterField( + model_name='certificatetemplate', + name='mode', + field=models.CharField(blank=True, choices=[(b'verified', b'verified'), (b'honor', b'honor'), (b'audit', b'audit'), (b'professional', b'professional'), (b'no-id-professional', b'no-id-professional'), (b'masters', b'masters')], default=b'honor', help_text='The course mode for this template.', max_length=125, null=True), + ), + migrations.AlterField( + model_name='generatedcertificate', + name='mode', + field=models.CharField(choices=[(b'verified', b'verified'), (b'honor', b'honor'), (b'audit', b'audit'), (b'professional', b'professional'), (b'no-id-professional', b'no-id-professional'), (b'masters', b'masters')], default=b'honor', max_length=32), + ), + ] diff --git a/lms/djangoapps/certificates/models.py b/lms/djangoapps/certificates/models.py index c664966eb8..40b5c196a6 100644 --- a/lms/djangoapps/certificates/models.py +++ b/lms/djangoapps/certificates/models.py @@ -256,9 +256,9 @@ class GeneratedCertificate(models.Model): # results. Django requires us to explicitly declare this. objects = models.Manager() - MODES = Choices('verified', 'honor', 'audit', 'professional', 'no-id-professional') + MODES = Choices('verified', 'honor', 'audit', 'professional', 'no-id-professional', 'masters') - VERIFIED_CERTS_MODES = [CourseMode.VERIFIED, CourseMode.CREDIT_MODE] + VERIFIED_CERTS_MODES = [CourseMode.VERIFIED, CourseMode.CREDIT_MODE, CourseMode.MASTERS] user = models.ForeignKey(User, on_delete=models.CASCADE) course_id = CourseKeyField(max_length=255, blank=True, default=None) diff --git a/lms/djangoapps/certificates/queue.py b/lms/djangoapps/certificates/queue.py index 0a85e75d70..772eb7fab1 100644 --- a/lms/djangoapps/certificates/queue.py +++ b/lms/djangoapps/certificates/queue.py @@ -289,7 +289,7 @@ class XQueueCertInterface(object): is_eligible_for_certificate = is_whitelisted or CourseMode.is_eligible_for_certificate(enrollment_mode) unverified = False # For credit mode generate verified certificate - if cert_mode == CourseMode.CREDIT_MODE: + if cert_mode in (CourseMode.CREDIT_MODE, CourseMode.MASTERS): cert_mode = CourseMode.VERIFIED if template_file is not None: diff --git a/lms/djangoapps/certificates/signals.py b/lms/djangoapps/certificates/signals.py index 3028f84ffa..d8a103fa79 100644 --- a/lms/djangoapps/certificates/signals.py +++ b/lms/djangoapps/certificates/signals.py @@ -146,6 +146,7 @@ def fire_ungenerated_certificate_task(user, course_key, expected_verification_st CourseMode.CREDIT_MODE, CourseMode.PROFESSIONAL, CourseMode.NO_ID_PROFESSIONAL_MODE, + CourseMode.MASTERS, ] enrollment_mode, __ = CourseEnrollment.enrollment_mode_for_user(user, course_key) cert = GeneratedCertificate.certificate_for_student(user, course_key) diff --git a/lms/djangoapps/certificates/tests/test_signals.py b/lms/djangoapps/certificates/tests/test_signals.py index bf1250d466..792064e8b0 100644 --- a/lms/djangoapps/certificates/tests/test_signals.py +++ b/lms/djangoapps/certificates/tests/test_signals.py @@ -363,6 +363,7 @@ class CertificateGenerationTaskTest(ModuleStoreTestCase): ('verified', True), ('no-id-professional', True), ('credit', True), + ('masters', True), ('audit', False), ('honor', False), )