Revert "feat: Reimagine certificate_availability_date and certificates_display_behavior"

This commit is contained in:
Matt Tuchfarber
2021-07-07 16:53:05 -04:00
committed by GitHub
parent b4df37d48e
commit 63cb6a97ff
34 changed files with 572 additions and 933 deletions

View File

@@ -47,7 +47,6 @@ from lms.djangoapps.certificates.utils import (
has_html_certificates_enabled as _has_html_certificates_enabled
)
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
from xmodule.data import CertificatesDisplayBehaviors
log = logging.getLogger("edx.certificate")
User = get_user_model()
@@ -268,7 +267,6 @@ def certificate_downloadable_status(student, course_key):
if (
not certificates_viewable_for_course(course_overview) and
CertificateStatuses.is_passing_status(current_status['status']) and
course_overview.certificates_display_behavior == CertificatesDisplayBehaviors.END_WITH_DATE and
course_overview.certificate_available_date
):
response_data['earned_but_not_available'] = True
@@ -596,18 +594,17 @@ def certificates_viewable_for_course(course):
if course.self_paced:
return True
if (
course.certificates_display_behavior == CertificatesDisplayBehaviors.EARLY_NO_INFO
course.certificates_display_behavior in ('early_with_info', 'early_no_info')
or course.certificates_show_before_end
):
return True
if (
course.certificates_display_behavior == CertificatesDisplayBehaviors.END_WITH_DATE
and course.certificate_available_date
course.certificate_available_date
and course.certificate_available_date <= datetime.now(UTC)
):
return True
if (
course.certificates_display_behavior == CertificatesDisplayBehaviors.END
course.certificate_available_date is None
and course.has_ended()
):
return True

View File

@@ -19,7 +19,6 @@ from freezegun import freeze_time
from opaque_keys.edx.keys import CourseKey
from opaque_keys.edx.locator import CourseLocator
from testfixtures import LogCapture
from xmodule.data import CertificatesDisplayBehaviors
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase, SharedModuleStoreTestCase
from xmodule.modulestore.tests.factories import CourseFactory
@@ -225,31 +224,19 @@ class CertificateDownloadableStatusTests(WebCertificateTestMixin, ModuleStoreTes
'uuid': cert_status['uuid']}
@ddt.data(
(True, timedelta(days=2), CertificatesDisplayBehaviors.END_WITH_DATE, True, None),
(False, -timedelta(days=2), CertificatesDisplayBehaviors.EARLY_NO_INFO, True, None),
(False, timedelta(days=2), CertificatesDisplayBehaviors.EARLY_NO_INFO, True, None),
(False, -timedelta(days=2), CertificatesDisplayBehaviors.END, True, None),
(False, timedelta(days=2), CertificatesDisplayBehaviors.END, True, None),
(False, -timedelta(days=2), CertificatesDisplayBehaviors.END_WITH_DATE, True, None),
(False, timedelta(days=2), CertificatesDisplayBehaviors.END_WITH_DATE, False, True),
(False, timedelta(days=2), False, True),
(False, -timedelta(days=2), True, None),
(True, timedelta(days=2), True, None)
)
@ddt.unpack
@patch.dict(settings.FEATURES, {'CERTIFICATES_HTML_VIEW': True})
def test_cert_api_return(
self,
self_paced,
cert_avail_delta,
certificates_display_behavior,
cert_downloadable_status,
earned_but_not_available
):
def test_cert_api_return(self, self_paced, cert_avail_delta, cert_downloadable_status, earned_but_not_available):
"""
Test 'downloadable status'
"""
cert_avail_date = datetime.now(pytz.UTC) + cert_avail_delta
self.course.self_paced = self_paced
self.course.certificate_available_date = cert_avail_date
self.course.certificates_display_behavior = certificates_display_behavior
self.course.save()
self._setup_course_certificate()

View File

@@ -24,7 +24,6 @@ from lms.djangoapps.certificates.tests.factories import GeneratedCertificateFact
from lms.djangoapps.certificates.utils import get_certificate_url
from openedx.core.djangoapps.site_configuration.tests.test_util import with_site_configuration
from openedx.core.djangolib.testing.utils import CacheIsolationTestCase
from xmodule.data import CertificatesDisplayBehaviors
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
from xmodule.modulestore.tests.factories import CourseFactory
@@ -212,8 +211,7 @@ class CertificatesViewsSiteTests(ModuleStoreTestCase):
org='testorg',
number='run1',
display_name='refundable course',
certificate_available_date=datetime.datetime.today() - datetime.timedelta(days=1),
certificates_display_behavior=CertificatesDisplayBehaviors.END_WITH_DATE
certificate_available_date=datetime.datetime.today() - datetime.timedelta(days=1)
)
self.course.cert_html_view_enabled = True
self.course.save()

View File

@@ -50,7 +50,6 @@ from openedx.core.djangoapps.site_configuration.tests.test_util import (
from openedx.core.djangolib.js_utils import js_escaped_string
from openedx.core.djangolib.testing.utils import CacheIsolationTestCase
from openedx.core.lib.tests.assertions.events import assert_event_matches
from xmodule.data import CertificatesDisplayBehaviors
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
from xmodule.modulestore.tests.factories import CourseFactory
@@ -82,7 +81,6 @@ class CommonCertificatesTestCase(ModuleStoreTestCase):
number='run1',
display_name='refundable course',
certificate_available_date=datetime.datetime.today() - datetime.timedelta(days=1),
certificates_display_behavior=CertificatesDisplayBehaviors.END_WITH_DATE
)
self.course_id = self.course.location.course_key
self.user = UserFactory.create(

View File

@@ -50,7 +50,6 @@ from openedx.core.djangoapps.lang_pref.api import get_closest_released_language
from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers
from openedx.core.lib.courses import course_image_url
from openedx.core.lib.courses import get_course_by_id
from xmodule.data import CertificatesDisplayBehaviors
log = logging.getLogger(__name__)
_ = translation.ugettext
@@ -333,14 +332,8 @@ def _get_user_certificate(request, user, course_key, course, preview_mode=None):
if preview_mode:
# certificate is being previewed from studio
if request.user.has_perm(PREVIEW_CERTIFICATES, course):
if (
course.certificates_display_behavior == CertificatesDisplayBehaviors.END_WITH_DATE
and course.certificate_available_date
and not course.self_paced
):
if course.certificate_available_date and not course.self_paced:
modified_date = course.certificate_available_date
elif course.certificates_display_behavior == CertificatesDisplayBehaviors.END:
modified_date = course.end
else:
modified_date = datetime.now().date()
user_certificate = GeneratedCertificate(

View File

@@ -99,7 +99,6 @@ from common.djangoapps.util.tests.test_date_utils import fake_pgettext, fake_uge
from common.djangoapps.util.url import reload_django_url_config
from common.djangoapps.util.views import ensure_valid_course_key
from xmodule.course_module import COURSE_VISIBILITY_PRIVATE, COURSE_VISIBILITY_PUBLIC, COURSE_VISIBILITY_PUBLIC_OUTLINE
from xmodule.data import CertificatesDisplayBehaviors
from xmodule.graders import ShowCorrectness
from xmodule.modulestore import ModuleStoreEnum
from xmodule.modulestore.django import modulestore
@@ -1289,7 +1288,6 @@ class ProgressPageBaseTests(ModuleStoreTestCase):
grade_cutoffs={'çü†øƒƒ': 0.75, 'Pass': 0.5},
end=datetime.now(),
certificate_available_date=datetime.now(UTC),
certificates_display_behavior=CertificatesDisplayBehaviors.END_WITH_DATE,
**options
)

View File

@@ -5,7 +5,6 @@ from django.utils.translation import ugettext as _
from openedx.core.djangolib.markup import HTML, Text
from common.djangoapps.course_modes.models import CourseMode
from lms.djangoapps.certificates.data import CertificateStatuses
from xmodule.data import CertificatesDisplayBehaviors
%>
<%namespace name='static' file='../static_content.html'/>
@@ -37,12 +36,7 @@ else:
<div class="message message-status ${status_css_class} is-shown">
<p class="message-copy">
<%
if course_overview.certificates_display_behavior == CertificatesDisplayBehaviors.END_WITH_DATE:
certificate_available_date_string = course_overview.certificate_available_date.strftime('%Y-%m-%dT%H:%M:%S%z')
elif course_overview.certificates_display_behavior == CertificatesDisplayBehaviors.END:
certificate_available_date_string = course_overview.end.strftime('%Y-%m-%dT%H:%M:%S%z')
else:
raise Exception(course_overview.certificate_available_date, course_overview.certificates_display_behavior)
certificate_available_date_string = course_overview.certificate_available_date.strftime('%Y-%m-%dT%H:%M:%S%z')
container_string = _("Your grade and certificate will be ready after {date}.")
format = 'shortDate'
%>