Commit 3088c70f by Gabe Mulley Committed by Gabe Mulley

only override the upgrade deadline in self-paced courses

parent 990a8cbf
...@@ -1726,7 +1726,12 @@ class CourseEnrollment(models.Model): ...@@ -1726,7 +1726,12 @@ class CourseEnrollment(models.Model):
DynamicUpgradeDeadlineConfiguration.is_enabled() DynamicUpgradeDeadlineConfiguration.is_enabled()
or CourseDynamicUpgradeDeadlineConfiguration.is_enabled(self.course_id) or CourseDynamicUpgradeDeadlineConfiguration.is_enabled(self.course_id)
) )
if schedule_driven_deadlines_enabled and self.schedule and self.schedule.upgrade_deadline is not None: if (
schedule_driven_deadlines_enabled
and self.course_overview.self_paced
and self.schedule
and self.schedule.upgrade_deadline is not None
):
log.debug( log.debug(
'Schedules: Pulling upgrade deadline for CourseEnrollment %d from Schedule %d.', 'Schedules: Pulling upgrade deadline for CourseEnrollment %d from Schedule %d.',
self.id, self.schedule.id self.id, self.schedule.id
......
...@@ -121,13 +121,14 @@ class CourseEnrollmentTests(SharedModuleStoreTestCase): ...@@ -121,13 +121,14 @@ class CourseEnrollmentTests(SharedModuleStoreTestCase):
@factory.django.mute_signals(signals.post_save) @factory.django.mute_signals(signals.post_save)
def test_upgrade_deadline(self): def test_upgrade_deadline(self):
""" The property should use either the CourseMode or related Schedule to determine the deadline. """ """ The property should use either the CourseMode or related Schedule to determine the deadline. """
course = CourseFactory(self_paced=True)
course_mode = CourseModeFactory( course_mode = CourseModeFactory(
course_id=self.course.id, course_id=course.id,
mode_slug=CourseMode.VERIFIED, mode_slug=CourseMode.VERIFIED,
# This must be in the future to ensure it is returned by downstream code. # This must be in the future to ensure it is returned by downstream code.
expiration_datetime=datetime.datetime.now(pytz.UTC) + datetime.timedelta(days=1) expiration_datetime=datetime.datetime.now(pytz.UTC) + datetime.timedelta(days=1)
) )
enrollment = CourseEnrollmentFactory(course_id=self.course.id, mode=CourseMode.AUDIT) enrollment = CourseEnrollmentFactory(course_id=course.id, mode=CourseMode.AUDIT)
self.assertEqual(Schedule.objects.all().count(), 0) self.assertEqual(Schedule.objects.all().count(), 0)
self.assertEqual(enrollment.upgrade_deadline, course_mode.expiration_datetime) self.assertEqual(enrollment.upgrade_deadline, course_mode.expiration_datetime)
...@@ -142,3 +143,19 @@ class CourseEnrollmentTests(SharedModuleStoreTestCase): ...@@ -142,3 +143,19 @@ class CourseEnrollmentTests(SharedModuleStoreTestCase):
""" The property should return None if an upgrade cannot be upgraded. """ """ The property should return None if an upgrade cannot be upgraded. """
enrollment = CourseEnrollmentFactory(course_id=self.course.id, mode=mode) enrollment = CourseEnrollmentFactory(course_id=self.course.id, mode=mode)
self.assertIsNone(enrollment.upgrade_deadline) self.assertIsNone(enrollment.upgrade_deadline)
@skip_unless_lms
def test_upgrade_deadline_instructor_paced(self):
course = CourseFactory(self_paced=False)
course_upgrade_deadline = datetime.datetime.now(pytz.UTC) + datetime.timedelta(days=1)
CourseModeFactory(
course_id=course.id,
mode_slug=CourseMode.VERIFIED,
# This must be in the future to ensure it is returned by downstream code.
expiration_datetime=course_upgrade_deadline
)
enrollment = CourseEnrollmentFactory(course_id=course.id, mode=CourseMode.AUDIT)
DynamicUpgradeDeadlineConfiguration.objects.create(enabled=True)
ScheduleFactory(enrollment=enrollment)
self.assertIsNotNone(enrollment.schedule)
self.assertEqual(enrollment.upgrade_deadline, course_upgrade_deadline)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment