From 11f134766945f921f132227af97c5b208b696ae2 Mon Sep 17 00:00:00 2001 From: Dillon Dumesnil Date: Tue, 10 Nov 2020 14:07:31 -0500 Subject: [PATCH] AA-422: Ensure learners are not receiving updates after course end --- openedx/core/djangoapps/schedules/resolvers.py | 4 ++++ openedx/core/djangoapps/schedules/tests/test_resolvers.py | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/openedx/core/djangoapps/schedules/resolvers.py b/openedx/core/djangoapps/schedules/resolvers.py index eec8f4f97c..06b40a855b 100644 --- a/openedx/core/djangoapps/schedules/resolvers.py +++ b/openedx/core/djangoapps/schedules/resolvers.py @@ -473,6 +473,10 @@ class CourseNextSectionUpdate(PrefixedDebugLoggerMixin, RecipientResolver): template_context = get_base_template_context(self.site) for schedule in schedules: course = schedule.enrollment.course + # We don't want to show any updates if the course has ended so we short circuit here. + if course.end and course.end.date() <= target_date: + return + user = schedule.enrollment.user start_date = max(filter(None, (schedule.start_date, course.start))) LOG.info('Received a schedule for user {} in course {} for date {}'.format( diff --git a/openedx/core/djangoapps/schedules/tests/test_resolvers.py b/openedx/core/djangoapps/schedules/tests/test_resolvers.py index 94ae1bcc3f..7b389a1d9a 100644 --- a/openedx/core/djangoapps/schedules/tests/test_resolvers.py +++ b/openedx/core/djangoapps/schedules/tests/test_resolvers.py @@ -252,3 +252,11 @@ class TestCourseNextSectionUpdateResolver(SchedulesResolverTestMixin, ModuleStor log_message = ('Next Section Course Update: Last section was reached. ' 'There are no more highlights for {}'.format(self.course.id)) log_capture.check_present((LOG.name, 'WARNING', log_message)) + + @override_waffle_flag(COURSE_UPDATE_WAFFLE_FLAG, True) + def test_no_updates_if_course_ended(self): + self.course.end = self.yesterday + self.course = self.update_course(self.course, self.user.id) + resolver = self.create_resolver() + schedules = list(resolver.get_schedules()) + self.assertListEqual(schedules, [])