Merge pull request #28237 from edx/tuchfarber/move_may_certify_2

Move cert display decisions to certificates app
This commit is contained in:
Matt Tuchfarber
2021-07-22 10:20:13 -04:00
committed by GitHub
18 changed files with 234 additions and 184 deletions

View File

@@ -585,19 +585,6 @@ class CourseOverview(TimeStampedModel):
else:
return None
def may_certify(self):
"""
Returns whether it is acceptable to show the student a certificate
download link.
"""
return course_metadata_utils.may_certify_for_course(
self.certificates_display_behavior,
self.certificates_show_before_end,
self.has_ended(),
self.certificate_available_date,
self.self_paced
)
@property
def pre_requisite_courses(self):
"""

View File

@@ -141,7 +141,6 @@ class CourseOverviewTestCase(CatalogIntegrationMixin, ModuleStoreTestCase, Cache
('clean_id', ('#',)),
('has_ended', ()),
('has_started', ()),
('may_certify', ()),
]
for method_name, method_args in methods_to_test:
course_value = getattr(course, method_name)(*method_args)

View File

@@ -444,9 +444,18 @@ class ProgramProgressMeter:
}
try:
may_certify = CourseOverview.get_from_id(course_key).may_certify()
course_overview = CourseOverview.get_from_id(course_key)
except CourseOverview.DoesNotExist:
may_certify = True
else:
may_certify = certificate_api.should_certificate_be_visible(
course_overview.certificates_display_behavior,
course_overview.certificates_show_before_end,
course_overview.has_ended(),
course_overview.certificate_available_date,
course_overview.self_paced
)
if (
CertificateStatuses.is_passing_status(certificate['status'])
and may_certify
@@ -583,7 +592,13 @@ class ProgramDataExtender:
run_mode['upgrade_url'] = None
def _attach_course_run_may_certify(self, run_mode):
run_mode['may_certify'] = self.course_overview.may_certify()
run_mode['may_certify'] = certificate_api.should_certificate_be_visible(
self.course_overview.certificates_display_behavior,
self.course_overview.certificates_show_before_end,
self.course_overview.has_ended(),
self.course_overview.certificate_available_date,
self.course_overview.self_paced
)
def _attach_course_run_is_mobile_only(self, run_mode):
run_mode['is_mobile_only'] = self.mobile_only