Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
597bfc1d
Commit
597bfc1d
authored
Sep 26, 2013
by
Jason Bau
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add rudimentay export control checking
parent
d7912aeb
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
57 additions
and
15 deletions
+57
-15
common/djangoapps/cme_registration/tests/registration_tests.py
+16
-5
common/djangoapps/cme_registration/views.py
+33
-4
lms/templates/cme_register.html
+8
-6
No files found.
common/djangoapps/cme_registration/tests/registration_tests.py
View file @
597bfc1d
...
...
@@ -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'
}))
common/djangoapps/cme_registration/views.py
View file @
597bfc1d
...
...
@@ -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,13 @@ 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
)
json_string
=
{
'success'
:
True
,
'redirect_url'
:
redirect_url
}
json_string
=
{
'success'
:
True
}
HttpResponse
(
json
.
dumps
(
json_string
),
mimetype
=
"application/json"
)
response
=
HttpResponse
(
json
.
dumps
(
json_string
))
response
=
HttpResponse
(
json
.
dumps
({
'success'
:
True
}))
return
response
...
...
@@ -335,6 +342,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 experiencing a temporary system failure. Try again later.'
# obfuscated message
}
DENIED_COUNTRIES
=
[
'Sudan'
,
'Korea, Democratic People
\'
s Republic Of'
,
'Iran, Islamic Republic Of'
,
'Cuba'
,
'Syrian Alab Republic'
,
]
#Construct dicts for specialty and sub-specialty dropdowns
SPECIALTY_CHOICES
=
{}
SUB_SPECIALTY_CHOICES
=
{}
...
...
lms/templates/cme_register.html
View file @
597bfc1d
...
...
@@ -87,7 +87,12 @@
$
(
'#register-form'
).
on
(
'ajax:success'
,
function
(
event
,
json
,
xhr
)
{
if
(
json
.
success
)
{
$
(
'.message.submission-error'
).
removeClass
(
'is-shown'
);
location
.
href
=
"${reverse('dashboard')}"
;
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,11 +502,8 @@
</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>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment