Commit 6c74cf48 by Waheed Ahmed Committed by GitHub

Merge pull request #15837 from edx/waheed/LEARNER-2110-add-activation-key-var-in-sailthru

Add activation_key var to user profile in SailThru.
parents e00867cc 33e077d4
...@@ -145,7 +145,7 @@ REGISTRATION_UTM_PARAMETERS = { ...@@ -145,7 +145,7 @@ REGISTRATION_UTM_PARAMETERS = {
} }
REGISTRATION_UTM_CREATED_AT = 'registration_utm_created_at' REGISTRATION_UTM_CREATED_AT = 'registration_utm_created_at'
# used to announce a registration # used to announce a registration
REGISTER_USER = Signal(providing_args=["user", "profile"]) REGISTER_USER = Signal(providing_args=["user", "registration"])
# Disable this warning because it doesn't make sense to completely refactor tests to appease Pylint # Disable this warning because it doesn't make sense to completely refactor tests to appease Pylint
# pylint: disable=logging-format-interpolation # pylint: disable=logging-format-interpolation
...@@ -2022,7 +2022,7 @@ def create_account_with_params(request, params): ...@@ -2022,7 +2022,7 @@ def create_account_with_params(request, params):
) )
# Announce registration # Announce registration
REGISTER_USER.send(sender=None, user=user, profile=profile) REGISTER_USER.send(sender=None, user=user, registration=registration)
create_comments_service_user(user) create_comments_service_user(user)
......
...@@ -90,7 +90,7 @@ def add_email_marketing_cookies(sender, response=None, user=None, ...@@ -90,7 +90,7 @@ def add_email_marketing_cookies(sender, response=None, user=None,
@receiver(REGISTER_USER) @receiver(REGISTER_USER)
def email_marketing_register_user(sender, user=None, profile=None, def email_marketing_register_user(sender, user, registration,
**kwargs): # pylint: disable=unused-argument **kwargs): # pylint: disable=unused-argument
""" """
Called after user created and saved Called after user created and saved
...@@ -98,7 +98,7 @@ def email_marketing_register_user(sender, user=None, profile=None, ...@@ -98,7 +98,7 @@ def email_marketing_register_user(sender, user=None, profile=None,
Args: Args:
sender: Not used sender: Not used
user: The user object for the user being changed user: The user object for the user being changed
profile: The user profile for the user being changed registration: The user registration profile to activate user account
kwargs: Not used kwargs: Not used
""" """
email_config = EmailMarketingConfiguration.current() email_config = EmailMarketingConfiguration.current()
...@@ -110,9 +110,8 @@ def email_marketing_register_user(sender, user=None, profile=None, ...@@ -110,9 +110,8 @@ def email_marketing_register_user(sender, user=None, profile=None,
return return
# perform update asynchronously # perform update asynchronously
update_user.delay( update_user.delay(_create_sailthru_user_vars(user, user.profile, registration=registration), user.email,
_create_sailthru_user_vars(user, user.profile), user.email, site=_get_current_site(), new_user=True site=_get_current_site(), new_user=True)
)
@receiver(USER_FIELD_CHANGED) @receiver(USER_FIELD_CHANGED)
...@@ -161,7 +160,7 @@ def email_marketing_user_field_changed(sender, user=None, table=None, setting=No ...@@ -161,7 +160,7 @@ def email_marketing_user_field_changed(sender, user=None, table=None, setting=No
update_user_email.delay(user.email, old_value) update_user_email.delay(user.email, old_value)
def _create_sailthru_user_vars(user, profile): def _create_sailthru_user_vars(user, profile, registration=None):
""" """
Create sailthru user create/update vars from user + profile. Create sailthru user create/update vars from user + profile.
""" """
...@@ -181,6 +180,9 @@ def _create_sailthru_user_vars(user, profile): ...@@ -181,6 +180,9 @@ def _create_sailthru_user_vars(user, profile):
sailthru_vars['year_of_birth'] = profile.year_of_birth sailthru_vars['year_of_birth'] = profile.year_of_birth
sailthru_vars['country'] = unicode(profile.country.code) sailthru_vars['country'] = unicode(profile.country.code)
if registration:
sailthru_vars['activation_key'] = registration.activation_key
return sailthru_vars return sailthru_vars
......
...@@ -30,6 +30,7 @@ from email_marketing.tasks import ( ...@@ -30,6 +30,7 @@ from email_marketing.tasks import (
get_email_cookies_via_sailthru get_email_cookies_via_sailthru
) )
from openedx.core.djangoapps.lang_pref import LANGUAGE_KEY from openedx.core.djangoapps.lang_pref import LANGUAGE_KEY
from student.models import Registration
from student.tests.factories import UserFactory, UserProfileFactory from student.tests.factories import UserFactory, UserProfileFactory
from util.json_request import JsonResponse from util.json_request import JsonResponse
...@@ -70,9 +71,8 @@ class EmailMarketingTests(TestCase): ...@@ -70,9 +71,8 @@ class EmailMarketingTests(TestCase):
update_email_marketing_config(enabled=False) update_email_marketing_config(enabled=False)
self.request_factory = RequestFactory() self.request_factory = RequestFactory()
self.user = UserFactory.create(username='test', email=TEST_EMAIL) self.user = UserFactory.create(username='test', email=TEST_EMAIL)
self.profile = self.user.profile self.registration = Registration()
self.profile.year_of_birth = 1980 self.registration.register(self.user)
self.profile.save()
self.request = self.request_factory.get("foo") self.request = self.request_factory.get("foo")
update_email_marketing_config(enabled=True) update_email_marketing_config(enabled=True)
...@@ -308,14 +308,14 @@ class EmailMarketingTests(TestCase): ...@@ -308,14 +308,14 @@ class EmailMarketingTests(TestCase):
add_email_marketing_cookies(None) add_email_marketing_cookies(None)
self.assertFalse(mock_log_error.called) self.assertFalse(mock_log_error.called)
email_marketing_register_user(None) email_marketing_register_user(None, None, None)
self.assertFalse(mock_log_error.called) self.assertFalse(mock_log_error.called)
update_email_marketing_config(enabled=True) update_email_marketing_config(enabled=True)
# test anonymous users # test anonymous users
anon = AnonymousUser() anon = AnonymousUser()
email_marketing_register_user(None, user=anon) email_marketing_register_user(None, anon, None)
self.assertFalse(mock_log_error.called) self.assertFalse(mock_log_error.called)
email_marketing_user_field_changed(None, user=anon) email_marketing_user_field_changed(None, user=anon)
...@@ -443,19 +443,21 @@ class EmailMarketingTests(TestCase): ...@@ -443,19 +443,21 @@ class EmailMarketingTests(TestCase):
@patch('lms.djangoapps.email_marketing.tasks.update_user.delay') @patch('lms.djangoapps.email_marketing.tasks.update_user.delay')
def test_register_user(self, mock_update_user, mock_get_current_request): def test_register_user(self, mock_update_user, mock_get_current_request):
""" """
make sure register user call invokes update_user make sure register user call invokes update_user and includes activation_key
""" """
mock_get_current_request.return_value = self.request mock_get_current_request.return_value = self.request
email_marketing_register_user(None, user=self.user, profile=self.profile) email_marketing_register_user(None, user=self.user, registration=self.registration)
self.assertTrue(mock_update_user.called) self.assertTrue(mock_update_user.called)
self.assertEqual(mock_update_user.call_args[0][0]['activation_key'], self.registration.activation_key)
@patch('lms.djangoapps.email_marketing.tasks.update_user.delay') @patch('lms.djangoapps.email_marketing.tasks.update_user.delay')
def test_register_user_no_request(self, mock_update_user): def test_register_user_no_request(self, mock_update_user):
""" """
make sure register user call invokes update_user make sure register user call invokes update_user and includes activation_key
""" """
email_marketing_register_user(None, user=self.user, profile=self.profile) email_marketing_register_user(None, user=self.user, registration=self.registration)
self.assertTrue(mock_update_user.called) self.assertTrue(mock_update_user.called)
self.assertEqual(mock_update_user.call_args[0][0]['activation_key'], self.registration.activation_key)
@patch('lms.djangoapps.email_marketing.tasks.update_user.delay') @patch('lms.djangoapps.email_marketing.tasks.update_user.delay')
def test_register_user_language_preference(self, mock_update_user): def test_register_user_language_preference(self, mock_update_user):
...@@ -464,12 +466,12 @@ class EmailMarketingTests(TestCase): ...@@ -464,12 +466,12 @@ class EmailMarketingTests(TestCase):
""" """
# If the user hasn't set an explicit language preference, we should send the application's default. # If the user hasn't set an explicit language preference, we should send the application's default.
self.assertIsNone(self.user.preferences.model.get_value(self.user, LANGUAGE_KEY)) self.assertIsNone(self.user.preferences.model.get_value(self.user, LANGUAGE_KEY))
email_marketing_register_user(None, user=self.user, profile=self.profile) email_marketing_register_user(None, user=self.user, registration=self.registration)
self.assertEqual(mock_update_user.call_args[0][0]['ui_lang'], settings.LANGUAGE_CODE) self.assertEqual(mock_update_user.call_args[0][0]['ui_lang'], settings.LANGUAGE_CODE)
# If the user has set an explicit language preference, we should send it. # If the user has set an explicit language preference, we should send it.
self.user.preferences.create(key=LANGUAGE_KEY, value='es-419') self.user.preferences.create(key=LANGUAGE_KEY, value='es-419')
email_marketing_register_user(None, user=self.user, profile=self.profile) email_marketing_register_user(None, user=self.user, registration=self.registration)
self.assertEqual(mock_update_user.call_args[0][0]['ui_lang'], 'es-419') self.assertEqual(mock_update_user.call_args[0][0]['ui_lang'], 'es-419')
@patch('email_marketing.signals.crum.get_current_request') @patch('email_marketing.signals.crum.get_current_request')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment