30 lines
1.2 KiB
Python
30 lines
1.2 KiB
Python
""" Signal handler for enabling self-generated certificates by default
|
|
for self-paced courses.
|
|
"""
|
|
from celery.task import task
|
|
from django.dispatch.dispatcher import receiver
|
|
|
|
from certificates.models import CertificateGenerationCourseSetting
|
|
from opaque_keys.edx.keys import CourseKey
|
|
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
|
|
from xmodule.modulestore.django import SignalHandler
|
|
|
|
|
|
@receiver(SignalHandler.course_published)
|
|
def _listen_for_course_publish(sender, course_key, **kwargs): # pylint: disable=unused-argument
|
|
""" Catches the signal that a course has been published in Studio and
|
|
enable the self-generated certificates by default for self-paced
|
|
courses.
|
|
"""
|
|
enable_self_generated_certs.delay(unicode(course_key))
|
|
|
|
|
|
@task()
|
|
def enable_self_generated_certs(course_key):
|
|
"""Enable the self-generated certificates by default for self-paced courses."""
|
|
course_key = CourseKey.from_string(course_key)
|
|
course = CourseOverview.get_from_id(course_key)
|
|
is_enabled_for_course = CertificateGenerationCourseSetting.is_enabled_for_course(course_key)
|
|
if course.self_paced and not is_enabled_for_course:
|
|
CertificateGenerationCourseSetting.set_enabled_for_course(course_key, True)
|