fix: Temporarily disable generating certificates with a non-downloadable status (#28000)

CR-3792 MICROBA-1306
This commit is contained in:
Christie Rice
2021-06-22 15:56:11 -04:00
committed by GitHub
parent a8d1fb11ab
commit 532b97b4e2
4 changed files with 41 additions and 8 deletions

View File

@@ -95,9 +95,9 @@ def generate_allowlist_certificate_task(user, course_key, generation_mode=None):
if _can_generate_allowlist_certificate(user, course_key):
return _generate_certificate_task(user, course_key, generation_mode)
status = _set_allowlist_cert_status(user, course_key)
if status is not None:
return True
# status = _set_allowlist_cert_status(user, course_key)
# if status is not None:
# return True
return False
@@ -110,9 +110,9 @@ def generate_regular_certificate_task(user, course_key, generation_mode=None):
if _can_generate_v2_certificate(user, course_key):
return _generate_certificate_task(user, course_key, generation_mode)
status = _set_v2_cert_status(user, course_key)
if status is not None:
return True
# status = _set_v2_cert_status(user, course_key)
# if status is not None:
# return True
return False

View File

@@ -4,6 +4,7 @@
import uuid
from contextlib import contextmanager
from datetime import datetime, timedelta
from unittest import mock
from unittest.mock import patch
import ddt
@@ -71,6 +72,7 @@ from lms.djangoapps.grades.tests.utils import mock_passing_grade
from openedx.core.djangoapps.content.course_overviews.tests.factories import CourseOverviewFactory
from openedx.core.djangoapps.site_configuration.tests.test_util import with_site_configuration
CAN_GENERATE_METHOD = 'lms.djangoapps.certificates.generation_handler._can_generate_v2_certificate'
FEATURES_WITH_CERTS_ENABLED = settings.FEATURES.copy()
FEATURES_WITH_CERTS_ENABLED['CERTIFICATES_HTML_VIEW'] = True
@@ -550,6 +552,7 @@ class GenerateUserCertificatesTest(EventTestMixin, WebCertificateTestMixin, Modu
self.enrollment = CourseEnrollment.enroll(self.student, self.course.id, mode='honor')
self.request_factory = RequestFactory()
@mock.patch(CAN_GENERATE_METHOD, mock.Mock(return_value=True))
@patch.dict(settings.FEATURES, {'CERTIFICATES_HTML_VIEW': True})
def test_new_cert_request_for_html_certificate(self):
"""
@@ -560,7 +563,7 @@ class GenerateUserCertificatesTest(EventTestMixin, WebCertificateTestMixin, Modu
generate_user_certificates(self.student, self.course.id)
cert = GeneratedCertificate.eligible_certificates.get(user=self.student, course_id=self.course.id)
assert cert.status == CertificateStatuses.unverified
assert cert.status == CertificateStatuses.downloadable
@patch.dict(settings.FEATURES, {'CERTIFICATES_HTML_VIEW': False})
def test_cert_url_empty_with_invalid_certificate(self):

View File

@@ -323,6 +323,36 @@ class CertificateTests(ModuleStoreTestCase):
assert not generate_certificate_task(other_user, self.course_run_key)
assert not generate_regular_certificate_task(other_user, self.course_run_key)
def test_handle_audit_status(self):
"""
Test handling of a user who is not passing and is enrolled in audit mode
"""
different_user = UserFactory()
CourseEnrollmentFactory(
user=different_user,
course_id=self.course_run_key,
is_active=True,
mode=GeneratedCertificate.MODES.audit,
)
assert _set_v2_cert_status(different_user, self.course_run_key) is None
assert not generate_regular_certificate_task(different_user, self.course_run_key)
def test_handle_verified_status(self):
"""
Test handling of a user who is not passing and is enrolled in verified mode
"""
different_user = UserFactory()
CourseEnrollmentFactory(
user=different_user,
course_id=self.course_run_key,
is_active=True,
mode=GeneratedCertificate.MODES.verified,
)
assert _set_v2_cert_status(different_user, self.course_run_key) == 'notpassing'
assert generate_regular_certificate_task(different_user, self.course_run_key)
def test_is_using_updated_true(self):
"""
Test the updated flag

View File

@@ -2087,7 +2087,7 @@ class TestCertificateGeneration(InstructorTaskModuleTestCase):
'failed': 0,
'skipped': 2
}
with self.assertNumQueries(74):
with self.assertNumQueries(55):
self.assertCertificatesGenerated(task_input, expected_results)
@ddt.data(