diff --git a/openedx/core/djangoapps/schedules/management/commands/send_course_update.py b/openedx/core/djangoapps/schedules/management/commands/send_course_update.py index a74339f779..b1e38599fc 100644 --- a/openedx/core/djangoapps/schedules/management/commands/send_course_update.py +++ b/openedx/core/djangoapps/schedules/management/commands/send_course_update.py @@ -1,11 +1,11 @@ from openedx.core.djangoapps.schedules.management.commands import SendEmailBaseCommand from openedx.core.djangoapps.schedules.resolvers import CourseUpdateResolver -from openedx.core.djangoapps.schedules.tasks import course_update_schedule_bin +from openedx.core.djangoapps.schedules.tasks import ScheduleCourseUpdate class Command(SendEmailBaseCommand): resolver_class = CourseUpdateResolver - async_send_task = course_update_schedule_bin + async_send_task = ScheduleCourseUpdate def __init__(self, *args, **kwargs): super(Command, self).__init__(*args, **kwargs) diff --git a/openedx/core/djangoapps/schedules/management/commands/send_recurring_nudge.py b/openedx/core/djangoapps/schedules/management/commands/send_recurring_nudge.py index 1de9c799aa..0202048695 100644 --- a/openedx/core/djangoapps/schedules/management/commands/send_recurring_nudge.py +++ b/openedx/core/djangoapps/schedules/management/commands/send_recurring_nudge.py @@ -1,11 +1,11 @@ from openedx.core.djangoapps.schedules.management.commands import SendEmailBaseCommand from openedx.core.djangoapps.schedules.resolvers import ScheduleStartResolver -from openedx.core.djangoapps.schedules.tasks import recurring_nudge_schedule_bin +from openedx.core.djangoapps.schedules.tasks import ScheduleRecurringNudge class Command(SendEmailBaseCommand): resolver_class = ScheduleStartResolver - async_send_task = recurring_nudge_schedule_bin + async_send_task = ScheduleRecurringNudge def __init__(self, *args, **kwargs): super(Command, self).__init__(*args, **kwargs) diff --git a/openedx/core/djangoapps/schedules/management/commands/send_upgrade_reminder.py b/openedx/core/djangoapps/schedules/management/commands/send_upgrade_reminder.py index c53f122e7e..fbfa0fb1e6 100644 --- a/openedx/core/djangoapps/schedules/management/commands/send_upgrade_reminder.py +++ b/openedx/core/djangoapps/schedules/management/commands/send_upgrade_reminder.py @@ -1,11 +1,11 @@ from openedx.core.djangoapps.schedules.management.commands import SendEmailBaseCommand from openedx.core.djangoapps.schedules.resolvers import UpgradeReminderResolver -from openedx.core.djangoapps.schedules.tasks import upgrade_reminder_schedule_bin +from openedx.core.djangoapps.schedules.tasks import ScheduleUpgradeReminder class Command(SendEmailBaseCommand): resolver_class = UpgradeReminderResolver - async_send_task = upgrade_reminder_schedule_bin + async_send_task = ScheduleUpgradeReminder def __init__(self, *args, **kwargs): super(Command, self).__init__(*args, **kwargs) diff --git a/openedx/core/djangoapps/schedules/management/commands/tests/test_send_recurring_nudge.py b/openedx/core/djangoapps/schedules/management/commands/tests/test_send_recurring_nudge.py index 8b549b3ecb..3fae1c53ac 100644 --- a/openedx/core/djangoapps/schedules/management/commands/tests/test_send_recurring_nudge.py +++ b/openedx/core/djangoapps/schedules/management/commands/tests/test_send_recurring_nudge.py @@ -112,7 +112,7 @@ class TestSendRecurringNudge(FilteredQueryCountMixin, CacheIsolationTestCase): expected_queries += NUM_COURSE_MODES_QUERIES with self.assertNumQueries(expected_queries, table_blacklist=WAFFLE_TABLES): - tasks.recurring_nudge_schedule_bin( + tasks.ScheduleRecurringNudge().run( self.site_config.site.id, target_day_str=test_datetime_str, day_offset=-3, bin_num=b, org_list=[schedules[0].enrollment.course.org], ) @@ -132,7 +132,7 @@ class TestSendRecurringNudge(FilteredQueryCountMixin, CacheIsolationTestCase): test_datetime_str = serialize(test_datetime) for b in range(resolvers.RECURRING_NUDGE_NUM_BINS): with self.assertNumQueries(NUM_QUERIES_NO_MATCHING_SCHEDULES, table_blacklist=WAFFLE_TABLES): - tasks.recurring_nudge_schedule_bin( + tasks.ScheduleRecurringNudge().run( self.site_config.site.id, target_day_str=test_datetime_str, day_offset=-3, bin_num=b, org_list=[schedule.enrollment.course.org], ) @@ -159,7 +159,7 @@ class TestSendRecurringNudge(FilteredQueryCountMixin, CacheIsolationTestCase): test_datetime = datetime.datetime(2017, 8, 3, 20, tzinfo=pytz.UTC) test_datetime_str = serialize(test_datetime) - tasks.recurring_nudge_schedule_bin.apply_async( + tasks.ScheduleRecurringNudge.apply_async( self.site_config.site.id, target_day_str=test_datetime_str, day_offset=-3, bin_num=0, org_list=[schedule.enrollment.course.org], ) @@ -229,7 +229,7 @@ class TestSendRecurringNudge(FilteredQueryCountMixin, CacheIsolationTestCase): test_datetime = datetime.datetime(2017, 8, 3, 17, tzinfo=pytz.UTC) test_datetime_str = serialize(test_datetime) with self.assertNumQueries(NUM_QUERIES_WITH_MATCHES, table_blacklist=WAFFLE_TABLES): - tasks.recurring_nudge_schedule_bin( + tasks.ScheduleRecurringNudge().run( limited_config.site.id, target_day_str=test_datetime_str, day_offset=-3, bin_num=0, org_list=org_list, exclude_orgs=exclude_orgs, ) @@ -253,7 +253,7 @@ class TestSendRecurringNudge(FilteredQueryCountMixin, CacheIsolationTestCase): test_datetime = datetime.datetime(2017, 8, 3, 19, 44, 30, tzinfo=pytz.UTC) test_datetime_str = serialize(test_datetime) with self.assertNumQueries(NUM_QUERIES_WITH_MATCHES, table_blacklist=WAFFLE_TABLES): - tasks.recurring_nudge_schedule_bin( + tasks.ScheduleRecurringNudge().run( self.site_config.site.id, target_day_str=test_datetime_str, day_offset=-3, bin_num=user.id % resolvers.RECURRING_NUDGE_NUM_BINS, org_list=[schedules[0].enrollment.course.org], @@ -292,7 +292,7 @@ class TestSendRecurringNudge(FilteredQueryCountMixin, CacheIsolationTestCase): mock_schedule_send.apply_async = lambda args, *_a, **_kw: sent_messages.append(args) with self.assertNumQueries(NUM_QUERIES_WITH_MATCHES, table_blacklist=WAFFLE_TABLES): - tasks.recurring_nudge_schedule_bin( + tasks.ScheduleRecurringNudge().run( self.site_config.site.id, target_day_str=test_datetime_str, day_offset=day, bin_num=self._calculate_bin_for_user(user), org_list=[schedules[0].enrollment.course.org], ) @@ -339,7 +339,7 @@ class TestSendRecurringNudge(FilteredQueryCountMixin, CacheIsolationTestCase): user, schedule.enrollment.course.org ] - sent_messages = self._stub_sender_and_collect_sent_messages(bin_task=tasks.recurring_nudge_schedule_bin, + sent_messages = self._stub_sender_and_collect_sent_messages(bin_task=tasks.ScheduleRecurringNudge, stubbed_send_task=patch.object(tasks, '_recurring_nudge_schedule_send'), bin_task_params=bin_task_parameters) @@ -371,7 +371,7 @@ class TestSendRecurringNudge(FilteredQueryCountMixin, CacheIsolationTestCase): user, schedule.enrollment.course.org ] - sent_messages = self._stub_sender_and_collect_sent_messages(bin_task=tasks.recurring_nudge_schedule_bin, + sent_messages = self._stub_sender_and_collect_sent_messages(bin_task=tasks.ScheduleRecurringNudge, stubbed_send_task=patch.object(tasks, '_recurring_nudge_schedule_send'), bin_task_params=bin_task_parameters) @@ -410,7 +410,7 @@ class TestSendRecurringNudge(FilteredQueryCountMixin, CacheIsolationTestCase): user, schedule.enrollment.course.org ] - sent_messages = self._stub_sender_and_collect_sent_messages(bin_task=tasks.recurring_nudge_schedule_bin, + sent_messages = self._stub_sender_and_collect_sent_messages(bin_task=tasks.ScheduleRecurringNudge, stubbed_send_task=patch.object(tasks, '_recurring_nudge_schedule_send'), bin_task_params=bin_task_parameters) @@ -426,7 +426,7 @@ class TestSendRecurringNudge(FilteredQueryCountMixin, CacheIsolationTestCase): mock_schedule_send.apply_async = lambda args, *_a, **_kw: sent_messages.append(args) - bin_task( + bin_task().run( self.site_config.site.id, target_day_str=bin_task_params[0], day_offset=bin_task_params[1], diff --git a/openedx/core/djangoapps/schedules/management/commands/tests/test_send_upgrade_reminder.py b/openedx/core/djangoapps/schedules/management/commands/tests/test_send_upgrade_reminder.py index 5ceaff397e..99cf2829c1 100644 --- a/openedx/core/djangoapps/schedules/management/commands/tests/test_send_upgrade_reminder.py +++ b/openedx/core/djangoapps/schedules/management/commands/tests/test_send_upgrade_reminder.py @@ -116,7 +116,7 @@ class TestUpgradeReminder(FilteredQueryCountMixin, CacheIsolationTestCase): expected_queries += NUM_COURSE_MODES_QUERIES with self.assertNumQueries(expected_queries, table_blacklist=WAFFLE_TABLES): - tasks.upgrade_reminder_schedule_bin( + tasks.ScheduleUpgradeReminder().run( self.site_config.site.id, target_day_str=test_datetime_str, day_offset=2, bin_num=b, org_list=[schedules[0].enrollment.course.org], ) @@ -137,7 +137,7 @@ class TestUpgradeReminder(FilteredQueryCountMixin, CacheIsolationTestCase): test_datetime_str = serialize(test_datetime) for b in range(resolvers.UPGRADE_REMINDER_NUM_BINS): with self.assertNumQueries(NUM_QUERIES_NO_MATCHING_SCHEDULES, table_blacklist=WAFFLE_TABLES): - tasks.upgrade_reminder_schedule_bin( + tasks.ScheduleUpgradeReminder().run( self.site_config.site.id, target_day_str=test_datetime_str, day_offset=2, bin_num=b, org_list=[schedule.enrollment.course.org], ) @@ -213,7 +213,7 @@ class TestUpgradeReminder(FilteredQueryCountMixin, CacheIsolationTestCase): test_datetime = datetime.datetime(2017, 8, 3, 17, tzinfo=pytz.UTC) test_datetime_str = serialize(test_datetime) with self.assertNumQueries(NUM_QUERIES_WITH_MATCHES, table_blacklist=WAFFLE_TABLES): - tasks.upgrade_reminder_schedule_bin( + tasks.ScheduleUpgradeReminder().run( limited_config.site.id, target_day_str=test_datetime_str, day_offset=2, bin_num=0, org_list=org_list, exclude_orgs=exclude_orgs, ) @@ -237,7 +237,7 @@ class TestUpgradeReminder(FilteredQueryCountMixin, CacheIsolationTestCase): test_datetime = datetime.datetime(2017, 8, 3, 19, 44, 30, tzinfo=pytz.UTC) test_datetime_str = serialize(test_datetime) with self.assertNumQueries(NUM_QUERIES_WITH_MATCHES, table_blacklist=WAFFLE_TABLES): - tasks.upgrade_reminder_schedule_bin( + tasks.ScheduleUpgradeReminder().run( self.site_config.site.id, target_day_str=test_datetime_str, day_offset=2, bin_num=user.id % resolvers.UPGRADE_REMINDER_NUM_BINS, org_list=[schedules[0].enrollment.course.org], @@ -292,7 +292,7 @@ class TestUpgradeReminder(FilteredQueryCountMixin, CacheIsolationTestCase): # since we create a new course for each schedule in this test, we expect there to be one per message num_expected_queries = NUM_QUERIES_WITH_MATCHES + NUM_QUERIES_WITH_DEADLINE with self.assertNumQueries(num_expected_queries, table_blacklist=WAFFLE_TABLES): - tasks.upgrade_reminder_schedule_bin( + tasks.ScheduleUpgradeReminder().run( self.site_config.site.id, target_day_str=test_datetime_str, day_offset=day, bin_num=self._calculate_bin_for_user(user), org_list=[schedules[0].enrollment.course.org], diff --git a/openedx/core/djangoapps/schedules/tasks.py b/openedx/core/djangoapps/schedules/tasks.py index f56d7a3b68..a13bd5cfe1 100644 --- a/openedx/core/djangoapps/schedules/tasks.py +++ b/openedx/core/djangoapps/schedules/tasks.py @@ -1,7 +1,7 @@ import datetime import logging -from celery.task import task +from celery.task import task, Task from django.conf import settings from django.contrib.sites.models import Site from django.contrib.staticfiles.templatetags.staticfiles import static @@ -65,36 +65,42 @@ def _recurring_nudge_schedule_send(site_id, msg_str): ace.send(msg) -@task(ignore_result=True, routing_key=ROUTING_KEY) -def recurring_nudge_schedule_bin( - site_id, target_day_str, day_offset, bin_num, org_list, exclude_orgs=False, override_recipient_email=None, -): - return resolvers.recurring_nudge_schedule_bin( - _recurring_nudge_schedule_send, - site_id, - target_day_str, - day_offset, - bin_num, - org_list, - exclude_orgs=exclude_orgs, - override_recipient_email=override_recipient_email, - ) +class ScheduleRecurringNudge(Task): + ignore_result=True + routing_key=ROUTING_KEY + + def run( + self, site_id, target_day_str, day_offset, bin_num, org_list, exclude_orgs=False, override_recipient_email=None, + ): + return resolvers.recurring_nudge_schedule_bin( + _recurring_nudge_schedule_send, + site_id, + target_day_str, + day_offset, + bin_num, + org_list, + exclude_orgs=exclude_orgs, + override_recipient_email=override_recipient_email, + ) -@task(ignore_result=True, routing_key=ROUTING_KEY) -def upgrade_reminder_schedule_bin( - site_id, target_day_str, day_offset, bin_num, org_list, exclude_orgs=False, override_recipient_email=None, -): - return resolvers.upgrade_reminder_schedule_bin( - _upgrade_reminder_schedule_send, - site_id, - target_day_str, - day_offset, - bin_num, - org_list, - exclude_orgs=exclude_orgs, - override_recipient_email=override_recipient_email, - ) +class ScheduleUpgradeReminder(Task): + ignore_result=True + routing_key=ROUTING_KEY + + def run( + self, site_id, target_day_str, day_offset, bin_num, org_list, exclude_orgs=False, override_recipient_email=None, + ): + return resolvers.upgrade_reminder_schedule_bin( + _upgrade_reminder_schedule_send, + site_id, + target_day_str, + day_offset, + bin_num, + org_list, + exclude_orgs=exclude_orgs, + override_recipient_email=override_recipient_email, + ) @task(ignore_result=True, routing_key=ROUTING_KEY) def _upgrade_reminder_schedule_send(site_id, msg_str): @@ -106,20 +112,23 @@ def _upgrade_reminder_schedule_send(site_id, msg_str): ace.send(msg) -@task(ignore_result=True, routing_key=ROUTING_KEY) -def course_update_schedule_bin( - site_id, target_day_str, day_offset, bin_num, org_list, exclude_orgs=False, override_recipient_email=None, -): - return resolvers.course_update_schedule_bin( - _course_update_schedule_send, - site_id, - target_day_str, - day_offset, - bin_num, - org_list, - exclude_orgs=exclude_orgs, - override_recipient_email=override_recipient_email, - ) +class ScheduleCourseUpdate(Task): + ignore_result=True + routing_key=ROUTING_KEY + + def run( + self, site_id, target_day_str, day_offset, bin_num, org_list, exclude_orgs=False, override_recipient_email=None, + ): + return resolvers.course_update_schedule_bin( + _course_update_schedule_send, + site_id, + target_day_str, + day_offset, + bin_num, + org_list, + exclude_orgs=exclude_orgs, + override_recipient_email=override_recipient_email, + ) @task(ignore_result=True, routing_key=ROUTING_KEY)