From 3088c70f252c959e554d8424beee45004371fef8 Mon Sep 17 00:00:00 2001 From: Gabe Mulley Date: Tue, 12 Sep 2017 08:28:07 -0400 Subject: [PATCH] only override the upgrade deadline in self-paced courses --- common/djangoapps/student/models.py | 7 ++++++- .../djangoapps/student/tests/test_models.py | 21 +++++++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/common/djangoapps/student/models.py b/common/djangoapps/student/models.py index 272df69cc6..5717f377be 100644 --- a/common/djangoapps/student/models.py +++ b/common/djangoapps/student/models.py @@ -1726,7 +1726,12 @@ class CourseEnrollment(models.Model): DynamicUpgradeDeadlineConfiguration.is_enabled() 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( 'Schedules: Pulling upgrade deadline for CourseEnrollment %d from Schedule %d.', self.id, self.schedule.id diff --git a/common/djangoapps/student/tests/test_models.py b/common/djangoapps/student/tests/test_models.py index 9b32f9f4c1..e8c73458d1 100644 --- a/common/djangoapps/student/tests/test_models.py +++ b/common/djangoapps/student/tests/test_models.py @@ -121,13 +121,14 @@ class CourseEnrollmentTests(SharedModuleStoreTestCase): @factory.django.mute_signals(signals.post_save) def test_upgrade_deadline(self): """ The property should use either the CourseMode or related Schedule to determine the deadline. """ + course = CourseFactory(self_paced=True) course_mode = CourseModeFactory( - course_id=self.course.id, + course_id=course.id, mode_slug=CourseMode.VERIFIED, # 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) ) - 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(enrollment.upgrade_deadline, course_mode.expiration_datetime) @@ -142,3 +143,19 @@ class CourseEnrollmentTests(SharedModuleStoreTestCase): """ The property should return None if an upgrade cannot be upgraded. """ enrollment = CourseEnrollmentFactory(course_id=self.course.id, mode=mode) 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)