Commit 1511851a by Will Daly

Merge pull request #6170 from edx/will/old-login-register-email-opt-in

Add email opt in to old login and register pages
parents dca161cc 23a51a65
"""Tests for the login and registration form rendering. """ """Tests for the login and registration form rendering. """
import urllib import urllib
import unittest import unittest
from collections import OrderedDict
from mock import patch from mock import patch
from django.conf import settings from django.conf import settings
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
...@@ -125,6 +126,29 @@ class LoginFormTest(ModuleStoreTestCase): ...@@ -125,6 +126,29 @@ class LoginFormTest(ModuleStoreTestCase):
) )
self.assertContains(response, expected_url) self.assertContains(response, expected_url)
@ddt.data(None, "true", "false")
def test_email_opt_in(self, opt_in_value):
params = {
'course_id': self.course_id,
'enrollment_action': 'enroll'
}
if opt_in_value is not None:
params['email_opt_in'] = opt_in_value
# Get the login page
response = self.client.get(self.url, params)
# Verify that the hidden parameter is set correctly
hidden_param = '<input type="hidden" name="email_opt_in" value="{val}"'.format(
val=opt_in_value
)
if opt_in_value is not None:
self.assertContains(response, hidden_param)
else:
self.assertNotContains(response, hidden_param)
@ddt.ddt @ddt.ddt
@override_settings(MODULESTORE=MODULESTORE_CONFIG) @override_settings(MODULESTORE=MODULESTORE_CONFIG)
...@@ -182,3 +206,32 @@ class RegisterFormTest(ModuleStoreTestCase): ...@@ -182,3 +206,32 @@ class RegisterFormTest(ModuleStoreTestCase):
redirect_url=reverse("shoppingcart.views.show_cart") redirect_url=reverse("shoppingcart.views.show_cart")
) )
self.assertContains(response, expected_url) self.assertContains(response, expected_url)
@ddt.data(None, "true", "false")
def test_email_opt_in(self, opt_in_value):
params = OrderedDict()
params['course_id'] = self.course_id
params['enrollment_action'] = 'enroll'
if opt_in_value is not None:
params['email_opt_in'] = opt_in_value
# Get the login page
response = self.client.get(self.url, params)
# Verify that the hidden parameter is set correctly
hidden_param = '<input type="hidden" name="email_opt_in" value="{val}"'.format(
val=opt_in_value
)
if opt_in_value is not None:
self.assertContains(response, hidden_param)
else:
self.assertNotContains(response, hidden_param)
# Verify that the login link preserves the querystring params
login_link = u"{url}?{params}".format(
url=reverse('signin_user'),
params=urllib.urlencode(params)
)
self.assertContains(response, login_link)
...@@ -364,8 +364,10 @@ def signin_user(request): ...@@ -364,8 +364,10 @@ def signin_user(request):
return redirect(reverse('dashboard')) return redirect(reverse('dashboard'))
course_id = request.GET.get('course_id') course_id = request.GET.get('course_id')
email_opt_in = request.GET.get('email_opt_in')
context = { context = {
'course_id': course_id, 'course_id': course_id,
'email_opt_in': email_opt_in,
'enrollment_action': request.GET.get('enrollment_action'), 'enrollment_action': request.GET.get('enrollment_action'),
# Bool injected into JS to submit form if we're inside a running third- # Bool injected into JS to submit form if we're inside a running third-
# party auth pipeline; distinct from the actual instance of the running # party auth pipeline; distinct from the actual instance of the running
...@@ -394,9 +396,11 @@ def register_user(request, extra_context=None): ...@@ -394,9 +396,11 @@ def register_user(request, extra_context=None):
return external_auth.views.redirect_with_get('root', request.GET) return external_auth.views.redirect_with_get('root', request.GET)
course_id = request.GET.get('course_id') course_id = request.GET.get('course_id')
email_opt_in = request.GET.get('email_opt_in')
context = { context = {
'course_id': course_id, 'course_id': course_id,
'email_opt_in': email_opt_in,
'email': '', 'email': '',
'enrollment_action': request.GET.get('enrollment_action'), 'enrollment_action': request.GET.get('enrollment_action'),
'name': '', 'name': '',
......
...@@ -198,6 +198,10 @@ ...@@ -198,6 +198,10 @@
<input type="hidden" name="course_id" value="${course_id | h}" /> <input type="hidden" name="course_id" value="${course_id | h}" />
% endif % endif
% if email_opt_in:
<input type="hidden" name="email_opt_in" value="${email_opt_in | h}" />
% endif
<div class="form-actions"> <div class="form-actions">
<button name="submit" type="submit" id="submit" class="action action-primary action-update login-button"></button> <button name="submit" type="submit" id="submit" class="action action-primary action-update login-button"></button>
</div> </div>
......
...@@ -158,8 +158,12 @@ ...@@ -158,8 +158,12 @@
</html> </html>
<%def name="login_query()">${ <%def name="login_query()">${
u"?course_id={0}&enrollment_action={1}".format( u"?course_id={0}&enrollment_action={1}{email_opt_in}".format(
urlquote_plus(course_id), urlquote_plus(course_id),
urlquote_plus(enrollment_action) urlquote_plus(enrollment_action),
email_opt_in=(
u"&email_opt_in=" + urlquote_plus(email_opt_in)
if email_opt_in else ""
)
) if course_id and enrollment_action else "" ) if course_id and enrollment_action else ""
}</%def> }</%def>
...@@ -361,6 +361,10 @@ ...@@ -361,6 +361,10 @@
<input type="hidden" name="course_id" value="${course_id | h}" /> <input type="hidden" name="course_id" value="${course_id | h}" />
% endif % endif
% if email_opt_in:
<input type="hidden" name="email_opt_in" value="${email_opt_in | h }" />
% endif
<div class="form-actions"> <div class="form-actions">
<button name="submit" type="submit" id="submit" class="action action-primary action-update register-button">${_('Register')} <span class="orn-plus">+</span> ${_('Create My Account')}</button> <button name="submit" type="submit" id="submit" class="action action-primary action-update register-button">${_('Register')} <span class="orn-plus">+</span> ${_('Create My Account')}</button>
</div> </div>
......
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