handlers.py 1.13 KB
Newer Older
Gregory Martin committed
1 2 3 4 5 6 7 8
"""
This module contains all general use or cross-use handlers.
"""
import logging

from django.dispatch import receiver

from certificates.models import CertificateGenerationCourseSetting
9
from signals import COURSE_PACING_CHANGED
Gregory Martin committed
10 11 12 13

log = logging.getLogger(__name__)


14 15
@receiver(COURSE_PACING_CHANGED, dispatch_uid="update_cert_settings_on_pacing_change")
def _update_cert_settings_on_pacing_change(sender, updated_course_overview, **kwargs):  # pylint: disable=unused-argument
Gregory Martin committed
16 17 18 19
    """
    Catches the signal that course pacing has changed and enable/disable
    the self-generated certificates according to course-pacing.
    """
20 21 22
    toggle_self_generated_certs(updated_course_overview.id, updated_course_overview.self_paced)
    log.info(u'Certificate Generation Setting Toggled for {course_id} via pacing change'.format(
        course_id=updated_course_overview.id
Gregory Martin committed
23 24 25 26 27 28 29
    ))


def toggle_self_generated_certs(course_key, course_self_paced):
    """
    Enable or disable self-generated certificates for a course according to pacing.
    """
30
    CertificateGenerationCourseSetting.set_self_generatation_enabled_for_course(course_key, course_self_paced)