Move day-offsets into class attributes of the schedule management commands
This commit is contained in:
committed by
Nimisha Asthagiri
parent
8afe1ffe17
commit
c4249c6bc5
@@ -9,6 +9,7 @@ from openedx.core.djangoapps.schedules.utils import PrefixedDebugLoggerMixin
|
||||
|
||||
class SendEmailBaseCommand(PrefixedDebugLoggerMixin, BaseCommand):
|
||||
async_send_task = None # define in subclass
|
||||
offsets = () # define in subclass
|
||||
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument(
|
||||
@@ -37,9 +38,6 @@ class SendEmailBaseCommand(PrefixedDebugLoggerMixin, BaseCommand):
|
||||
override_recipient_email = options.get('override_recipient_email')
|
||||
self.send_emails(site, current_date, override_recipient_email)
|
||||
|
||||
def send_emails(self, *args, **kwargs):
|
||||
raise NotImplementedError
|
||||
|
||||
def enqueue(self, day_offset, site, current_date, override_recipient_email=None):
|
||||
self.async_send_task.enqueue(
|
||||
site,
|
||||
@@ -47,3 +45,7 @@ class SendEmailBaseCommand(PrefixedDebugLoggerMixin, BaseCommand):
|
||||
day_offset,
|
||||
override_recipient_email,
|
||||
)
|
||||
|
||||
def send_emails(self, *args, **kwargs):
|
||||
for offset in self.offsets:
|
||||
self.enqueue(offset, *args, **kwargs)
|
||||
|
||||
@@ -5,7 +5,4 @@ from openedx.core.djangoapps.schedules.tasks import ScheduleCourseUpdate
|
||||
class Command(SendEmailBaseCommand):
|
||||
async_send_task = ScheduleCourseUpdate
|
||||
log_prefix = 'Course Update'
|
||||
|
||||
def send_emails(self, *args, **kwargs):
|
||||
for day_offset in xrange(-7, -77, -7):
|
||||
self.enqueue(day_offset, *args, **kwargs)
|
||||
offsets = xrange(-7, -77, -7)
|
||||
|
||||
@@ -5,7 +5,4 @@ from openedx.core.djangoapps.schedules.tasks import ScheduleRecurringNudge
|
||||
class Command(SendEmailBaseCommand):
|
||||
async_send_task = ScheduleRecurringNudge
|
||||
log_prefix = 'Scheduled Nudge'
|
||||
|
||||
def send_emails(self, *args, **kwargs):
|
||||
for day_offset in (-3, -10):
|
||||
self.enqueue(day_offset, *args, **kwargs)
|
||||
offsets = (-3, -10)
|
||||
|
||||
@@ -5,6 +5,4 @@ from openedx.core.djangoapps.schedules.tasks import ScheduleUpgradeReminder
|
||||
class Command(SendEmailBaseCommand):
|
||||
async_send_task = ScheduleUpgradeReminder
|
||||
log_prefix = 'Upgrade Reminder'
|
||||
|
||||
def send_emails(self, *args, **kwargs):
|
||||
self.enqueue(2, *args, **kwargs)
|
||||
offsets = (2,)
|
||||
|
||||
@@ -4,7 +4,7 @@ from unittest import skipUnless
|
||||
import ddt
|
||||
import pytz
|
||||
from django.conf import settings
|
||||
from mock import patch
|
||||
from mock import patch, DEFAULT, Mock
|
||||
|
||||
from openedx.core.djangoapps.schedules.management.commands import SendEmailBaseCommand
|
||||
from openedx.core.djangoapps.site_configuration.tests.factories import SiteFactory, SiteConfigurationFactory
|
||||
@@ -29,3 +29,18 @@ class TestSendEmailBaseCommand(CacheIsolationTestCase):
|
||||
datetime.datetime(2017, 9, 29, tzinfo=pytz.UTC),
|
||||
None
|
||||
)
|
||||
|
||||
def test_send_emails(self):
|
||||
with patch.multiple(
|
||||
self.command,
|
||||
offsets=(1, 3, 5),
|
||||
enqueue=DEFAULT,
|
||||
):
|
||||
arg = Mock(name='arg')
|
||||
kwarg = Mock(name='kwarg')
|
||||
self.command.send_emails(arg, kwarg=kwarg)
|
||||
self.assertFalse(arg.called)
|
||||
self.assertFalse(kwarg.called)
|
||||
|
||||
for offset in self.command.offsets:
|
||||
self.command.enqueue.assert_any_call(offset, arg, kwarg=kwarg)
|
||||
|
||||
Reference in New Issue
Block a user