Convert bin-scheduling tasks into classes
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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],
|
||||
|
||||
@@ -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],
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user