Add the email marketing welcome email delay ECOM-6760
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('email_marketing', '0003_auto_20160715_1145'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='emailmarketingconfiguration',
|
||||
name='welcome_email_send_delay',
|
||||
field=models.IntegerField(default=600, help_text='Number of seconds to delay the sending of User Welcome email after user has been activated'),
|
||||
),
|
||||
]
|
||||
@@ -127,6 +127,16 @@ class EmailMarketingConfiguration(ConfigurationModel):
|
||||
)
|
||||
)
|
||||
|
||||
# The number of seconds to delay for welcome emails sending. This is needed to acommendate those
|
||||
# learners who created user account during course enrollment so we can send a different message
|
||||
# in our welcome email.
|
||||
welcome_email_send_delay = models.fields.IntegerField(
|
||||
default=600,
|
||||
help_text=_(
|
||||
"Number of seconds to delay the sending of User Welcome email after user has been activated"
|
||||
)
|
||||
)
|
||||
|
||||
def __unicode__(self):
|
||||
return u"Email marketing configuration: New user list %s, Activation template: %s" % \
|
||||
(self.sailthru_new_user_list, self.sailthru_activation_template)
|
||||
|
||||
@@ -3,6 +3,7 @@ This file contains celery tasks for email marketing signal handler.
|
||||
"""
|
||||
import logging
|
||||
import time
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from celery import task
|
||||
from django.core.cache import cache
|
||||
@@ -56,10 +57,16 @@ def update_user(self, sailthru_vars, email, site=None, new_user=False, activatio
|
||||
|
||||
# if activating user, send welcome email
|
||||
if activation and email_config.sailthru_activation_template:
|
||||
scheduled_datetime = datetime.utcnow() + timedelta(seconds=email_config.welcome_email_send_delay)
|
||||
try:
|
||||
sailthru_response = sailthru_client.api_post("send",
|
||||
{"email": email,
|
||||
"template": email_config.sailthru_activation_template})
|
||||
sailthru_response = sailthru_client.api_post(
|
||||
"send",
|
||||
{
|
||||
"email": email,
|
||||
"template": email_config.sailthru_activation_template,
|
||||
"schedule_time": scheduled_datetime.strftime('%Y-%m-%dT%H:%M:%SZ')
|
||||
}
|
||||
)
|
||||
except SailthruClientError as exc:
|
||||
log.error("Exception attempting to send welcome email to user %s in Sailthru - %s", email, unicode(exc))
|
||||
raise self.retry(exc=exc,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
"""Tests of email marketing signal handlers."""
|
||||
import ddt
|
||||
import logging
|
||||
import datetime
|
||||
|
||||
from django.test import TestCase
|
||||
from django.contrib.auth.models import AnonymousUser
|
||||
@@ -45,6 +46,7 @@ def update_email_marketing_config(enabled=True, key='badkey', secret='badsecret'
|
||||
sailthru_get_tags_from_sailthru=False,
|
||||
sailthru_enroll_cost=enroll_cost,
|
||||
sailthru_max_retries=0,
|
||||
welcome_email_send_delay=600
|
||||
)
|
||||
|
||||
|
||||
@@ -168,12 +170,14 @@ class EmailMarketingTests(TestCase):
|
||||
"""
|
||||
mock_sailthru_post.return_value = SailthruResponse(JsonResponse({'ok': True}))
|
||||
mock_sailthru_get.return_value = SailthruResponse(JsonResponse({'lists': [{'name': 'new list'}], 'ok': True}))
|
||||
expected_schedule = datetime.datetime.utcnow() + datetime.timedelta(seconds=600)
|
||||
update_user.delay({}, self.user.email, new_user=True, activation=True)
|
||||
# look for call args for 2nd call
|
||||
self.assertEquals(mock_sailthru_post.call_args[0][0], "send")
|
||||
userparms = mock_sailthru_post.call_args[0][1]
|
||||
self.assertEquals(userparms['email'], TEST_EMAIL)
|
||||
self.assertEquals(userparms['template'], "Activation")
|
||||
self.assertEquals(userparms['schedule_time'], expected_schedule.strftime('%Y-%m-%dT%H:%M:%SZ'))
|
||||
|
||||
@patch('email_marketing.tasks.log.error')
|
||||
@patch('email_marketing.tasks.SailthruClient.api_post')
|
||||
|
||||
Reference in New Issue
Block a user