Merge pull request #11010 from edx/bderusha/auto-deadlines
Fix auto set deadlines on publish
This commit is contained in:
@@ -159,7 +159,9 @@ class CourseMode(models.Model):
|
||||
@expiration_datetime.setter
|
||||
def expiration_datetime(self, new_datetime):
|
||||
""" Saves datetime to _expiration_datetime and sets the explicit flag. """
|
||||
self.expiration_datetime_is_explicit = True
|
||||
# Only set explicit flag if we are setting an actual date.
|
||||
if new_datetime is not None:
|
||||
self.expiration_datetime_is_explicit = True
|
||||
self._expiration_datetime = new_datetime
|
||||
|
||||
@classmethod
|
||||
|
||||
@@ -421,3 +421,12 @@ class CourseModeModelTest(TestCase):
|
||||
|
||||
self.assertFalse(verified_mode.expiration_datetime_is_explicit)
|
||||
self.assertEqual(verified_mode.expiration_datetime, now)
|
||||
|
||||
def test_expiration_datetime_explicitly_set_to_none(self):
|
||||
""" Verify that setting the _expiration_date property does not set the explicit flag. """
|
||||
verified_mode, __ = self.create_mode('verified', 'Verified Certificate')
|
||||
self.assertFalse(verified_mode.expiration_datetime_is_explicit)
|
||||
|
||||
verified_mode.expiration_datetime = None
|
||||
self.assertFalse(verified_mode.expiration_datetime_is_explicit)
|
||||
self.assertIsNone(verified_mode.expiration_datetime)
|
||||
|
||||
@@ -14,11 +14,11 @@ def _listen_for_course_publish(sender, course_key, **kwargs): # pylint: disable
|
||||
Catches the signal that a course has been published in Studio and
|
||||
sets the verification deadline date to a default.
|
||||
"""
|
||||
try:
|
||||
deadline = VerificationDeadline.objects.get(course_key=course_key)
|
||||
if deadline and not deadline.deadline_is_explicit:
|
||||
course = modulestore().get_course(course_key)
|
||||
if course and deadline.deadline != course.end:
|
||||
course = modulestore().get_course(course_key)
|
||||
if course:
|
||||
try:
|
||||
deadline = VerificationDeadline.objects.get(course_key=course_key)
|
||||
if not deadline.deadline_is_explicit and deadline.deadline != course.end:
|
||||
VerificationDeadline.set_deadline(course_key, course.end)
|
||||
except ObjectDoesNotExist:
|
||||
pass
|
||||
except ObjectDoesNotExist:
|
||||
VerificationDeadline.set_deadline(course_key, course.end)
|
||||
|
||||
@@ -24,13 +24,13 @@ class VerificationDeadlineSignalTest(ModuleStoreTestCase):
|
||||
VerificationDeadline.objects.all().delete()
|
||||
|
||||
def test_no_deadline(self):
|
||||
""" Verify the signal does not raise error when no deadlines found. """
|
||||
""" Verify the signal sets deadline to course end when no deadline exists."""
|
||||
_listen_for_course_publish('store', self.course.id)
|
||||
|
||||
self.assertIsNone(_listen_for_course_publish('store', self.course.id))
|
||||
self.assertEqual(VerificationDeadline.deadline_for_course(self.course.id), self.course.end)
|
||||
|
||||
def test_deadline(self):
|
||||
""" Verify deadline is set to course end date by signal. """
|
||||
""" Verify deadline is set to course end date by signal when changed. """
|
||||
deadline = datetime.now(tz=UTC) - timedelta(days=7)
|
||||
VerificationDeadline.set_deadline(self.course.id, deadline)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user