diff --git a/openedx/core/djangoapps/schedules/resolvers.py b/openedx/core/djangoapps/schedules/resolvers.py index c3402c81fb..c7b22a07d0 100644 --- a/openedx/core/djangoapps/schedules/resolvers.py +++ b/openedx/core/djangoapps/schedules/resolvers.py @@ -117,6 +117,7 @@ class BinnedSchedulesBaseResolver(PrefixedDebugLoggerMixin, RecipientResolver): } users = User.objects.filter( courseenrollment__is_active=True, + is_active=True, **schedule_day_equals_target_day_filter ).annotate( id_mod=self.bin_num_for_user_id(F('id')) diff --git a/openedx/core/djangoapps/schedules/tests/test_resolvers.py b/openedx/core/djangoapps/schedules/tests/test_resolvers.py index df9882bc10..22a1b27204 100644 --- a/openedx/core/djangoapps/schedules/tests/test_resolvers.py +++ b/openedx/core/djangoapps/schedules/tests/test_resolvers.py @@ -155,3 +155,15 @@ class TestCourseUpdateResolver(SchedulesResolverTestMixin, ModuleStoreTestCase): resolver = self.create_resolver() schedules = list(resolver.schedules_for_bin()) self.assertIn('optout', schedules[0][2]['unsubscribe_url']) + + @override_waffle_flag(COURSE_UPDATE_WAFFLE_FLAG, True) + def test_get_schedules_with_target_date_by_bin_and_orgs_filter_inactive_users(self): + """Tests that schedules of inactive users are excluded""" + resolver = self.create_resolver() + schedules = resolver.get_schedules_with_target_date_by_bin_and_orgs() + + self.assertEqual(schedules.count(), 1) + self.user.is_active = False + self.user.save() + schedules = resolver.get_schedules_with_target_date_by_bin_and_orgs() + self.assertEqual(schedules.count(), 0)