Commit 4b2b734b by Jason Bau

Merge pull request #1145 from edx/dcadams/cme_registration

Dcadams/cme registration
parents 6456a7de 352a9407
......@@ -212,7 +212,7 @@ class CmeUserProfile(UserProfile):
('Guyana', 'Guyana'),
('Haiti', 'Haiti'),
('Heard Island And McDonald Is lands', 'Heard Island And McDonald Is lands'),
('Holy See (V.atican City State)', 'Holy See (V.atican City State)'),
('Holy See (Vatican City State)', 'Holy See (Vatican City State)'),
('Honduras', 'Honduras'),
('Hong Kong', 'Hong Kong'),
('Hungary', 'Hungary'),
......@@ -245,8 +245,8 @@ class CmeUserProfile(UserProfile):
('Liechtenstein', 'Liechtenstein'),
('Lithuania', 'Lithuania'),
('Luxembourg', 'Luxembourg'),
('MacAo', 'MacAo'),
('MacEdonia, The Former Yugoslav Republic Of', 'MacEdonia, The Former Yugoslav Republic Of'),
('Macao', 'Macao'),
('Macedonia, The Former Yugoslav Republic Of', 'Macedonia, The Former Yugoslav Republic Of'),
('Madagascar', 'Madagascar'),
('Malawi', 'Malawi'),
('Malaysia', 'Malaysia'),
......@@ -255,7 +255,7 @@ class CmeUserProfile(UserProfile):
('Malta', 'Malta'),
('Marshall Islands', 'Marshall Islands'),
('Martinique', 'Martinique'),
('Mauritan ia', 'Mauritan ia'),
('Mauritania', 'Mauritania'),
('Mauritius', 'Mauritius'),
('Mayotte', 'Mayotte'),
('Mexico', 'Mexico'),
......@@ -282,7 +282,6 @@ class CmeUserProfile(UserProfile):
('Norfolk Island', 'Norfolk Island'),
('Northern Mariana Islands', 'Northern Mariana Islands'),
('Norway', 'Norway'),
('Not Specified', 'Not Specified'),
('Oman', 'Oman'),
('Pakistan', 'Pakistan'),
('Palau', 'Palau'),
......@@ -292,7 +291,7 @@ class CmeUserProfile(UserProfile):
('Paraguay', 'Paraguay'),
('Peru', 'Peru'),
('Philippines', 'Philippines'),
('Pitc.airn', 'Pitc.airn'),
('Pitcairn', 'Pitcairn'),
('Poland', 'Poland'),
('Portugal', 'Portugal'),
('Puerto Rico', 'Puerto Rico'),
......@@ -321,6 +320,7 @@ class CmeUserProfile(UserProfile):
('Somalia', 'Somalia'),
('South Africa', 'South Africa'),
('South Georgia And The South Sandwich Islands', 'South Georgia And The South Sandwich Islands'),
('South Sudan', 'South Sudan'),
('Spain', 'Spain'),
('Sri Lanka', 'Sri Lanka'),
('Sudan', 'Sudan'),
......@@ -329,7 +329,7 @@ class CmeUserProfile(UserProfile):
('Swaziland', 'Swaziland'),
('Sweden', 'Sweden'),
('Switzerland', 'Switzerland'),
('Syrian Alab Republic', 'Syrian Alab Republic'),
('Syrian Arab Republic', 'Syrian Arab Republic'),
('Taiwan', 'Taiwan'),
('Tajikistan', 'Tajikistan'),
('Tanzania, United Republic Of', 'Tanzania, United Republic Of'),
......@@ -347,7 +347,7 @@ class CmeUserProfile(UserProfile):
('U.S. Minor Outlying Islands', 'U.S. Minor Outlying Islands'),
('Uganda', 'Uganda'),
('Ukraine', 'Ukraine'),
('United Alab Emirates', 'United Alab Emirates'),
('United Arab Emirates', 'United Arab Emirates'),
('United Kingdom', 'United Kingdom'),
('Uruguay', 'Uruguay'),
('Uzbekistan', 'Uzbekistan'),
......
......@@ -18,7 +18,7 @@ from django.contrib.auth.models import User
from student.models import Registration, UserProfile
from cme_registration.models import CmeUserProfile
from student.tests.factories import UserFactory
from cme_registration.views import DENIED_COUNTRIES, validate_export_controls
TEST_MITX_FEATURES = settings.MITX_FEATURES.copy()
TEST_MITX_FEATURES['USE_CME_REGISTRATION'] = True
......@@ -132,7 +132,7 @@ class TestCmeRegistration(TestCase):
url = reverse('create_account')
response = self.client.post(url, self.post_vars)
self.assertContains(response, '{"success": true}')
self.assertContains(response, '"success": true')
@unittest.skipIf(settings.MITX_FEATURES.get('DISABLE_CME_REGISTRATION_TESTS', False),
dedent("""Skipping Test because the url is not in CMS"""))
......@@ -344,7 +344,7 @@ class TestCmeRegistration(TestCase):
response = self.client.post(url, self.post_vars)
#Check page displays success
self.assertContains(response, '{"success": true}')
self.assertContains(response, '"success": true')
#Check user was created
user = User.objects.filter(email='test@email.com')
......@@ -402,7 +402,7 @@ class TestCmeRegistration(TestCase):
response = self.client.post(url, self.post_vars)
#Check page displays success
self.assertContains(response, '{"success": true}')
self.assertContains(response, '"success": true')
#Check user was created
user = User.objects.filter(email='test@email.com')
......@@ -514,7 +514,7 @@ class TestCmeRegistration(TestCase):
response = self.client.post(url, self.post_vars)
#Check page displays success
self.assertContains(response, '{"success": true}')
self.assertContains(response, '"success": true')
@patch('cme_registration.models.CmeUserProfile.save', Mock(side_effect=Exception()))
@unittest.skipIf(settings.MITX_FEATURES.get('DISABLE_CME_REGISTRATION_TESTS', False),
......@@ -543,3 +543,14 @@ class TestCmeRegistration(TestCase):
self.assertRaises(Exception)
self.assertContains(response, 'Could not send activation e-mail.')
def test_export_controls(self):
"""
Test export controls verification
"""
for country in DENIED_COUNTRIES:
retv = validate_export_controls({'country': country})
self.assertFalse(retv['success'])
self.assertEqual(retv['field'], 'country')
self.assertIsNone(validate_export_controls({'country': 'United States'}))
......@@ -4,7 +4,7 @@ CME Registration methods
import json
import logging
from statsd import statsd
from dogapi import dog_stats_api
from django_future.csrf import ensure_csrf_cookie
from django.conf import settings
......@@ -18,6 +18,7 @@ from django.db import IntegrityError
from django.core.mail import send_mail
from student.models import Registration
import student
from cme_registration.models import CmeUserProfile
from mitxmako.shortcuts import render_to_response, render_to_string
......@@ -100,6 +101,11 @@ def cme_create_account(request, post_override=None):
json_string['field'] = 'username'
return HttpResponse(json.dumps(json_string))
#Validate Export controls
error = validate_export_controls(post_vars)
if error is not None:
return HttpResponse(json.dumps(error))
# Ok, looks like everything is legit. Create the account.
ret = _do_cme_create_account(post_vars)
if isinstance(ret, HttpResponse): # if there was an error then return that
......@@ -137,12 +143,14 @@ def cme_create_account(request, post_override=None):
login(request, login_user)
request.session.set_expiry(0)
statsd.increment("common.student.account_created")
redirect_url = student.views.try_change_enrollment(request)
dog_stats_api.increment("common.student.successful_login")
json_string = {'success': True}
HttpResponse(json.dumps(json_string), mimetype="application/json")
json_string = {'success': True,
'redirect_url': redirect_url}
response = HttpResponse(json.dumps(json_string))
response = HttpResponse(json.dumps({'success': True}))
return response
......@@ -335,6 +343,28 @@ def validate_required_radios(post_vars):
return error
def validate_export_controls(post_vars):
"""
Checks that we are US export control compliant.
In keeping with the style of the rest of the app, returns failure dict if failed, else None
"""
country = post_vars.get('country', '')
if country in DENIED_COUNTRIES:
return {
'success': False,
'field': 'country',
'value': 'We are unable to register you at this present time.' # obfuscated message
}
DENIED_COUNTRIES = [
'Sudan',
'Korea, Democratic People\'s Republic Of',
'Iran, Islamic Republic Of',
'Cuba',
'Syrian Arab Republic',
]
#Construct dicts for specialty and sub-specialty dropdowns
SPECIALTY_CHOICES = {}
SUB_SPECIALTY_CHOICES = {}
......
......@@ -87,7 +87,12 @@
$('#register-form').on('ajax:success', function(event, json, xhr) {
if(json.success) {
$('.message.submission-error').removeClass('is-shown');
if(json.redirect_url){
location.href=json.redirect_url;
}
else {
location.href="${reverse('dashboard')}";
}
} else {
$('.status.message.submission-error').addClass('is-shown').focus();
$('.status.message.submission-error .message-copy').html(json.value).stop().css("display", "block");
......@@ -497,10 +502,7 @@
</div>
</li>
<div class="field select checkbox" id="mailing_list">
<input id="mailing_list" type="checkbox" name="mailing_list" value="true" checked />
<label for="mailing_list">Yes, include me on the mailing list for future educational activities</label>
</div>
<input id="mailing_list" type="hidden" name="mailing_list" value="true" />
</ol>
</fieldset>
......
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