get the course from CourseOverview table instead of Modulestore in certificates/signals.py.
This commit is contained in:
@@ -5,13 +5,13 @@ from celery.task import task
|
||||
from django.dispatch.dispatcher import receiver
|
||||
|
||||
from certificates.models import CertificateGenerationCourseSetting
|
||||
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview, COURSE_OVERVIEW_UPDATED
|
||||
from opaque_keys.edx.keys import CourseKey
|
||||
from xmodule.modulestore.django import modulestore, SignalHandler
|
||||
|
||||
|
||||
@receiver(SignalHandler.course_published)
|
||||
@receiver(COURSE_OVERVIEW_UPDATED)
|
||||
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
|
||||
""" Catches the signal that a course overview table has been updated in database and
|
||||
enable/disable the self-generated certificates according to course-pacing.
|
||||
"""
|
||||
set_self_generated_certs.delay(unicode(course_key))
|
||||
@@ -23,5 +23,5 @@ def set_self_generated_certs(course_key):
|
||||
Enable or disable self-generated certificates for a course according to pacing.
|
||||
"""
|
||||
course_key = CourseKey.from_string(course_key)
|
||||
course = modulestore().get_course(course_key)
|
||||
course = CourseOverview.get_from_id(course_key)
|
||||
CertificateGenerationCourseSetting.set_enabled_for_course(course_key, course.self_paced)
|
||||
|
||||
@@ -10,6 +10,7 @@ from django.db import models, transaction
|
||||
from django.db.models.fields import BooleanField, DateTimeField, DecimalField, TextField, FloatField, IntegerField
|
||||
from django.db.utils import IntegrityError
|
||||
from django.template import defaultfilters
|
||||
from django.dispatch import Signal
|
||||
|
||||
from ccx_keys.locator import CCXLocator
|
||||
from model_utils.models import TimeStampedModel
|
||||
@@ -26,6 +27,7 @@ from xmodule.modulestore.django import modulestore
|
||||
from openedx.core.djangoapps.xmodule_django.models import CourseKeyField, UsageKeyField
|
||||
from openedx.core.lib.xblock_fields.inherited_fields import DEFAULT_START_DATE
|
||||
|
||||
COURSE_OVERVIEW_UPDATED = Signal(providing_args=["course_key"])
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@@ -646,6 +648,12 @@ class CourseOverview(TimeStampedModel):
|
||||
"""Represent ourselves with the course key."""
|
||||
return unicode(self.id)
|
||||
|
||||
def send_signal(self):
|
||||
"""
|
||||
Sends out the signal that course_overview table has been updated.
|
||||
"""
|
||||
COURSE_OVERVIEW_UPDATED.send(sender=None, course_key=self.id)
|
||||
|
||||
|
||||
class CourseOverviewTab(models.Model):
|
||||
"""
|
||||
|
||||
@@ -11,9 +11,11 @@ from xmodule.modulestore.django import SignalHandler
|
||||
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
|
||||
updates the corresponding CourseOverview cache entry.
|
||||
updates the corresponding CourseOverview cache entry. Also sends out
|
||||
the signal that course_overview table has been updated.
|
||||
"""
|
||||
CourseOverview.load_from_module_store(course_key)
|
||||
course_overview = CourseOverview.load_from_module_store(course_key)
|
||||
course_overview.send_signal()
|
||||
|
||||
|
||||
@receiver(SignalHandler.course_deleted)
|
||||
|
||||
Reference in New Issue
Block a user