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
d96de424
Commit
d96de424
authored
Aug 07, 2014
by
jsa
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'release'
parents
ec5a2a1d
86515df7
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
140 additions
and
31 deletions
+140
-31
cms/djangoapps/course_creators/tests/test_views.py
+7
-1
common/djangoapps/edxmako/middleware.py
+10
-5
common/djangoapps/edxmako/shortcuts.py
+2
-2
common/djangoapps/edxmako/template.py
+2
-2
common/djangoapps/edxmako/tests.py
+43
-1
common/djangoapps/external_auth/tests/test_shib.py
+8
-0
common/djangoapps/student/tests/test_email.py
+6
-0
common/djangoapps/student/tests/test_password_policy.py
+6
-1
common/djangoapps/third_party_auth/tests/specs/base.py
+12
-0
lms/djangoapps/branding/tests.py
+3
-0
lms/djangoapps/courseware/tests/test_views.py
+3
-0
lms/djangoapps/django_comment_client/forum/tests.py
+3
-0
lms/djangoapps/instructor/tests/test_legacy_xss.py
+3
-0
lms/djangoapps/notification_prefs/tests.py
+7
-0
lms/djangoapps/open_ended_grading/tests.py
+8
-1
lms/templates/instructor/instructor_dashboard_2/e-commerce.html
+16
-17
requirements/edx/github.txt
+1
-1
No files found.
cms/djangoapps/course_creators/tests/test_views.py
View file @
d96de424
...
@@ -2,15 +2,16 @@
...
@@ -2,15 +2,16 @@
Tests course_creators.views.py.
Tests course_creators.views.py.
"""
"""
from
django.test
import
TestCase
from
django.contrib.auth.models
import
User
from
django.contrib.auth.models
import
User
from
django.core.exceptions
import
PermissionDenied
from
django.core.exceptions
import
PermissionDenied
from
django.test
import
TestCase
,
RequestFactory
from
course_creators.views
import
add_user_with_status_unrequested
,
add_user_with_status_granted
from
course_creators.views
import
add_user_with_status_unrequested
,
add_user_with_status_granted
from
course_creators.views
import
get_course_creator_status
,
update_course_creator_group
,
user_requested_access
from
course_creators.views
import
get_course_creator_status
,
update_course_creator_group
,
user_requested_access
import
mock
import
mock
from
student.roles
import
CourseCreatorRole
from
student.roles
import
CourseCreatorRole
from
student
import
auth
from
student
import
auth
from
edxmako.tests
import
mako_middleware_process_request
class
CourseCreatorView
(
TestCase
):
class
CourseCreatorView
(
TestCase
):
...
@@ -70,6 +71,11 @@ class CourseCreatorView(TestCase):
...
@@ -70,6 +71,11 @@ class CourseCreatorView(TestCase):
def
test_user_requested_access
(
self
):
def
test_user_requested_access
(
self
):
add_user_with_status_unrequested
(
self
.
user
)
add_user_with_status_unrequested
(
self
.
user
)
self
.
assertEqual
(
'unrequested'
,
get_course_creator_status
(
self
.
user
))
self
.
assertEqual
(
'unrequested'
,
get_course_creator_status
(
self
.
user
))
request
=
RequestFactory
()
.
get
(
'/'
)
request
.
user
=
self
.
user
mako_middleware_process_request
(
request
)
user_requested_access
(
self
.
user
)
user_requested_access
(
self
.
user
)
self
.
assertEqual
(
'pending'
,
get_course_creator_status
(
self
.
user
))
self
.
assertEqual
(
'pending'
,
get_course_creator_status
(
self
.
user
))
...
...
common/djangoapps/edxmako/middleware.py
View file @
d96de424
...
@@ -12,15 +12,20 @@
...
@@ -12,15 +12,20 @@
# See the License for the specific language governing permissions and
# See the License for the specific language governing permissions and
# limitations under the License.
# limitations under the License.
import
threading
from
django.template
import
RequestContext
from
django.template
import
RequestContext
from
util.request
import
safe_get_host
from
util.request
import
safe_get_host
requestcontext
=
None
REQUEST_CONTEXT
=
threading
.
local
()
class
MakoMiddleware
(
object
):
class
MakoMiddleware
(
object
):
def
process_request
(
self
,
request
):
def
process_request
(
self
,
request
):
global
requestcontext
REQUEST_CONTEXT
.
context
=
RequestContext
(
request
)
requestcontext
=
RequestContext
(
request
)
REQUEST_CONTEXT
.
context
[
'is_secure'
]
=
request
.
is_secure
()
requestcontext
[
'is_secure'
]
=
request
.
is_secure
()
REQUEST_CONTEXT
.
context
[
'site'
]
=
safe_get_host
(
request
)
requestcontext
[
'site'
]
=
safe_get_host
(
request
)
def
process_response
(
self
,
request
,
response
):
REQUEST_CONTEXT
.
context
=
None
return
response
common/djangoapps/edxmako/shortcuts.py
View file @
d96de424
...
@@ -92,8 +92,8 @@ def render_to_string(template_name, dictionary, context=None, namespace='main'):
...
@@ -92,8 +92,8 @@ def render_to_string(template_name, dictionary, context=None, namespace='main'):
context_instance
[
'marketing_link'
]
=
marketing_link
context_instance
[
'marketing_link'
]
=
marketing_link
# In various testing contexts, there might not be a current request context.
# In various testing contexts, there might not be a current request context.
if
edxmako
.
middleware
.
request
context
is
not
None
:
if
edxmako
.
middleware
.
REQUEST_CONTEXT
.
context
is
not
None
:
for
d
in
edxmako
.
middleware
.
request
context
:
for
d
in
edxmako
.
middleware
.
REQUEST_CONTEXT
.
context
:
context_dictionary
.
update
(
d
)
context_dictionary
.
update
(
d
)
for
d
in
context_instance
:
for
d
in
context_instance
:
context_dictionary
.
update
(
d
)
context_dictionary
.
update
(
d
)
...
...
common/djangoapps/edxmako/template.py
View file @
d96de424
...
@@ -48,8 +48,8 @@ class Template(MakoTemplate):
...
@@ -48,8 +48,8 @@ class Template(MakoTemplate):
context_dictionary
=
{}
context_dictionary
=
{}
# In various testing contexts, there might not be a current request context.
# In various testing contexts, there might not be a current request context.
if
edxmako
.
middleware
.
request
context
is
not
None
:
if
edxmako
.
middleware
.
REQUEST_CONTEXT
.
context
is
not
None
:
for
d
in
edxmako
.
middleware
.
request
context
:
for
d
in
edxmako
.
middleware
.
REQUEST_CONTEXT
.
context
:
context_dictionary
.
update
(
d
)
context_dictionary
.
update
(
d
)
for
d
in
context_instance
:
for
d
in
context_instance
:
context_dictionary
.
update
(
d
)
context_dictionary
.
update
(
d
)
...
...
common/djangoapps/edxmako/tests.py
View file @
d96de424
from
mock
import
patch
,
Mock
from
django.http
import
HttpResponse
from
django.test
import
TestCase
from
django.test
import
TestCase
from
django.test.utils
import
override_settings
from
django.test.utils
import
override_settings
from
django.test.client
import
RequestFactory
from
django.core.urlresolvers
import
reverse
from
django.core.urlresolvers
import
reverse
import
edxmako.middleware
from
edxmako
import
add_lookup
,
LOOKUP
from
edxmako
import
add_lookup
,
LOOKUP
from
edxmako.shortcuts
import
marketing_link
from
edxmako.shortcuts
import
marketing_link
from
mock
import
patch
from
student.tests.factories
import
UserFactory
from
util.testing
import
UrlResetMixin
from
util.testing
import
UrlResetMixin
...
@@ -37,3 +42,40 @@ class AddLookupTests(TestCase):
...
@@ -37,3 +42,40 @@ class AddLookupTests(TestCase):
dirs
=
LOOKUP
[
'test'
]
.
directories
dirs
=
LOOKUP
[
'test'
]
.
directories
self
.
assertEqual
(
len
(
dirs
),
1
)
self
.
assertEqual
(
len
(
dirs
),
1
)
self
.
assertTrue
(
dirs
[
0
]
.
endswith
(
'management'
))
self
.
assertTrue
(
dirs
[
0
]
.
endswith
(
'management'
))
class
MakoMiddlewareTest
(
TestCase
):
"""
Test MakoMiddleware.
"""
def
setUp
(
self
):
self
.
middleware
=
edxmako
.
middleware
.
MakoMiddleware
()
self
.
user
=
UserFactory
.
create
()
self
.
url
=
"/"
self
.
request
=
RequestFactory
()
.
get
(
self
.
url
)
self
.
request
.
user
=
self
.
user
self
.
response
=
Mock
(
spec
=
HttpResponse
)
def
test_clear_request_context_variable
(
self
):
"""
Test the global variable requestcontext is cleared correctly
when response middleware is called.
"""
self
.
middleware
.
process_request
(
self
.
request
)
# requestcontext should not be None.
self
.
assertIsNotNone
(
edxmako
.
middleware
.
REQUEST_CONTEXT
.
context
)
self
.
middleware
.
process_response
(
self
.
request
,
self
.
response
)
# requestcontext should be None.
self
.
assertIsNone
(
edxmako
.
middleware
.
REQUEST_CONTEXT
.
context
)
def
mako_middleware_process_request
(
request
):
"""
Initialize the global RequestContext variable
edxmako.middleware.requestcontext using the request object.
"""
mako_middleware
=
edxmako
.
middleware
.
MakoMiddleware
()
mako_middleware
.
process_request
(
request
)
common/djangoapps/external_auth/tests/test_shib.py
View file @
d96de424
...
@@ -27,6 +27,7 @@ from external_auth.views import shib_login, course_specific_login, course_specif
...
@@ -27,6 +27,7 @@ from external_auth.views import shib_login, course_specific_login, course_specif
from
student.views
import
create_account
,
change_enrollment
from
student.views
import
create_account
,
change_enrollment
from
student.models
import
UserProfile
,
Registration
,
CourseEnrollment
from
student.models
import
UserProfile
,
Registration
,
CourseEnrollment
from
student.tests.factories
import
UserFactory
from
student.tests.factories
import
UserFactory
from
edxmako.tests
import
mako_middleware_process_request
TEST_DATA_MIXED_MODULESTORE
=
mixed_store_config
(
settings
.
COMMON_TEST_DATA_ROOT
,
{})
TEST_DATA_MIXED_MODULESTORE
=
mixed_store_config
(
settings
.
COMMON_TEST_DATA_ROOT
,
{})
...
@@ -91,6 +92,9 @@ class ShibSPTest(ModuleStoreTestCase):
...
@@ -91,6 +92,9 @@ class ShibSPTest(ModuleStoreTestCase):
"""
"""
no_remote_user_request
=
self
.
request_factory
.
get
(
'/shib-login'
)
no_remote_user_request
=
self
.
request_factory
.
get
(
'/shib-login'
)
no_remote_user_request
.
META
.
update
({
'Shib-Identity-Provider'
:
IDP
})
no_remote_user_request
.
META
.
update
({
'Shib-Identity-Provider'
:
IDP
})
no_remote_user_request
.
user
=
AnonymousUser
()
mako_middleware_process_request
(
no_remote_user_request
)
no_remote_user_response
=
shib_login
(
no_remote_user_request
)
no_remote_user_response
=
shib_login
(
no_remote_user_request
)
self
.
assertEqual
(
no_remote_user_response
.
status_code
,
403
)
self
.
assertEqual
(
no_remote_user_response
.
status_code
,
403
)
self
.
assertIn
(
"identity server did not return your ID information"
,
no_remote_user_response
.
content
)
self
.
assertIn
(
"identity server did not return your ID information"
,
no_remote_user_response
.
content
)
...
@@ -155,6 +159,8 @@ class ShibSPTest(ModuleStoreTestCase):
...
@@ -155,6 +159,8 @@ class ShibSPTest(ModuleStoreTestCase):
'REMOTE_USER'
:
remote_user
,
'REMOTE_USER'
:
remote_user
,
'mail'
:
remote_user
})
'mail'
:
remote_user
})
request
.
user
=
AnonymousUser
()
request
.
user
=
AnonymousUser
()
mako_middleware_process_request
(
request
)
with
patch
(
'external_auth.views.AUDIT_LOG'
)
as
mock_audit_log
:
with
patch
(
'external_auth.views.AUDIT_LOG'
)
as
mock_audit_log
:
response
=
shib_login
(
request
)
response
=
shib_login
(
request
)
audit_log_calls
=
mock_audit_log
.
method_calls
audit_log_calls
=
mock_audit_log
.
method_calls
...
@@ -315,6 +321,8 @@ class ShibSPTest(ModuleStoreTestCase):
...
@@ -315,6 +321,8 @@ class ShibSPTest(ModuleStoreTestCase):
request2
=
self
.
request_factory
.
post
(
'/create_account'
,
data
=
postvars
)
request2
=
self
.
request_factory
.
post
(
'/create_account'
,
data
=
postvars
)
request2
.
session
=
client
.
session
request2
.
session
=
client
.
session
request2
.
user
=
AnonymousUser
()
request2
.
user
=
AnonymousUser
()
mako_middleware_process_request
(
request2
)
with
patch
(
'student.views.AUDIT_LOG'
)
as
mock_audit_log
:
with
patch
(
'student.views.AUDIT_LOG'
)
as
mock_audit_log
:
_response2
=
create_account
(
request2
)
_response2
=
create_account
(
request2
)
...
...
common/djangoapps/student/tests/test_email.py
View file @
d96de424
import
json
import
json
import
django.db
import
django.db
import
unittest
import
unittest
...
@@ -12,6 +13,7 @@ from mock import Mock, patch
...
@@ -12,6 +13,7 @@ from mock import Mock, patch
from
django.http
import
Http404
,
HttpResponse
from
django.http
import
Http404
,
HttpResponse
from
django.conf
import
settings
from
django.conf
import
settings
from
edxmako.shortcuts
import
render_to_string
from
edxmako.shortcuts
import
render_to_string
from
edxmako.tests
import
mako_middleware_process_request
from
util.request
import
safe_get_host
from
util.request
import
safe_get_host
from
textwrap
import
dedent
from
textwrap
import
dedent
...
@@ -93,9 +95,11 @@ class ReactivationEmailTests(EmailTestMixin, TestCase):
...
@@ -93,9 +95,11 @@ class ReactivationEmailTests(EmailTestMixin, TestCase):
# Thorough tests for safe_get_host are elsewhere; here we just want a quick URL sanity check
# Thorough tests for safe_get_host are elsewhere; here we just want a quick URL sanity check
request
=
RequestFactory
()
.
post
(
'unused_url'
)
request
=
RequestFactory
()
.
post
(
'unused_url'
)
request
.
user
=
self
.
user
request
.
META
[
'HTTP_HOST'
]
=
"aGenericValidHostName"
request
.
META
[
'HTTP_HOST'
]
=
"aGenericValidHostName"
self
.
append_allowed_hosts
(
"aGenericValidHostName"
)
self
.
append_allowed_hosts
(
"aGenericValidHostName"
)
mako_middleware_process_request
(
request
)
body
=
render_to_string
(
'emails/activation_email.txt'
,
context
)
body
=
render_to_string
(
'emails/activation_email.txt'
,
context
)
host
=
safe_get_host
(
request
)
host
=
safe_get_host
(
request
)
...
@@ -248,9 +252,11 @@ class EmailChangeConfirmationTests(EmailTestMixin, TransactionTestCase):
...
@@ -248,9 +252,11 @@ class EmailChangeConfirmationTests(EmailTestMixin, TransactionTestCase):
# Thorough tests for safe_get_host are elsewhere; here we just want a quick URL sanity check
# Thorough tests for safe_get_host are elsewhere; here we just want a quick URL sanity check
request
=
RequestFactory
()
.
post
(
'unused_url'
)
request
=
RequestFactory
()
.
post
(
'unused_url'
)
request
.
user
=
self
.
user
request
.
META
[
'HTTP_HOST'
]
=
"aGenericValidHostName"
request
.
META
[
'HTTP_HOST'
]
=
"aGenericValidHostName"
self
.
append_allowed_hosts
(
"aGenericValidHostName"
)
self
.
append_allowed_hosts
(
"aGenericValidHostName"
)
mako_middleware_process_request
(
request
)
body
=
render_to_string
(
'emails/confirm_email_change.txt'
,
context
)
body
=
render_to_string
(
'emails/confirm_email_change.txt'
,
context
)
url
=
safe_get_host
(
request
)
url
=
safe_get_host
(
request
)
...
...
common/djangoapps/student/tests/test_password_policy.py
View file @
d96de424
...
@@ -6,12 +6,14 @@ import json
...
@@ -6,12 +6,14 @@ import json
from
django.test
import
TestCase
from
django.test
import
TestCase
from
django.test.client
import
RequestFactory
from
django.test.client
import
RequestFactory
from
django.core.urlresolvers
import
reverse
from
django.core.urlresolvers
import
reverse
from
django.contrib.auth.models
import
AnonymousUser
from
django.utils.importlib
import
import_module
from
django.utils.importlib
import
import_module
from
django.test.utils
import
override_settings
from
django.test.utils
import
override_settings
from
django.conf
import
settings
from
django.conf
import
settings
from
mock
import
patch
from
mock
import
patch
from
student.views
import
create_accoun
t
from
edxmako.tests
import
mako_middleware_process_reques
t
from
external_auth.models
import
ExternalAuthMap
from
external_auth.models
import
ExternalAuthMap
from
student.views
import
create_account
@patch.dict
(
"django.conf.settings.FEATURES"
,
{
'ENFORCE_PASSWORD_POLICY'
:
True
})
@patch.dict
(
"django.conf.settings.FEATURES"
,
{
'ENFORCE_PASSWORD_POLICY'
:
True
})
class
TestPasswordPolicy
(
TestCase
):
class
TestPasswordPolicy
(
TestCase
):
...
@@ -255,6 +257,9 @@ class TestPasswordPolicy(TestCase):
...
@@ -255,6 +257,9 @@ class TestPasswordPolicy(TestCase):
internal_password
=
self
.
url_params
[
'password'
],
internal_password
=
self
.
url_params
[
'password'
],
external_domain
=
'shib:https://idp.stanford.edu/'
)
external_domain
=
'shib:https://idp.stanford.edu/'
)
request
.
session
[
'ExternalAuthMap'
]
=
extauth
request
.
session
[
'ExternalAuthMap'
]
=
extauth
request
.
user
=
AnonymousUser
()
mako_middleware_process_request
(
request
)
response
=
create_account
(
request
)
response
=
create_account
(
request
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
obj
=
json
.
loads
(
response
.
content
)
obj
=
json
.
loads
(
response
.
content
)
...
...
common/djangoapps/third_party_auth/tests/specs/base.py
View file @
d96de424
...
@@ -13,6 +13,7 @@ from django.contrib.messages.storage import fallback
...
@@ -13,6 +13,7 @@ from django.contrib.messages.storage import fallback
from
django.contrib.sessions.backends
import
cache
from
django.contrib.sessions.backends
import
cache
from
django.test
import
utils
as
django_utils
from
django.test
import
utils
as
django_utils
from
django.conf
import
settings
as
django_settings
from
django.conf
import
settings
as
django_settings
from
edxmako.tests
import
mako_middleware_process_request
from
social
import
actions
,
exceptions
from
social
import
actions
,
exceptions
from
social.apps.django_app
import
utils
as
social_utils
from
social.apps.django_app
import
utils
as
social_utils
from
social.apps.django_app
import
views
as
social_views
from
social.apps.django_app
import
views
as
social_views
...
@@ -420,6 +421,8 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
...
@@ -420,6 +421,8 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
self
.
client
.
get
(
self
.
client
.
get
(
pipeline
.
get_login_url
(
self
.
PROVIDER_CLASS
.
NAME
,
pipeline
.
AUTH_ENTRY_LOGIN
))
pipeline
.
get_login_url
(
self
.
PROVIDER_CLASS
.
NAME
,
pipeline
.
AUTH_ENTRY_LOGIN
))
actions
.
do_complete
(
strategy
,
social_views
.
_do_login
)
# pylint: disable-msg=protected-access
actions
.
do_complete
(
strategy
,
social_views
.
_do_login
)
# pylint: disable-msg=protected-access
mako_middleware_process_request
(
strategy
.
request
)
student_views
.
signin_user
(
strategy
.
request
)
student_views
.
signin_user
(
strategy
.
request
)
student_views
.
login_user
(
strategy
.
request
)
student_views
.
login_user
(
strategy
.
request
)
actions
.
do_complete
(
strategy
,
social_views
.
_do_login
)
# pylint: disable-msg=protected-access
actions
.
do_complete
(
strategy
,
social_views
.
_do_login
)
# pylint: disable-msg=protected-access
...
@@ -453,6 +456,8 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
...
@@ -453,6 +456,8 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
self
.
client
.
get
(
self
.
client
.
get
(
pipeline
.
get_login_url
(
self
.
PROVIDER_CLASS
.
NAME
,
pipeline
.
AUTH_ENTRY_LOGIN
))
pipeline
.
get_login_url
(
self
.
PROVIDER_CLASS
.
NAME
,
pipeline
.
AUTH_ENTRY_LOGIN
))
actions
.
do_complete
(
strategy
,
social_views
.
_do_login
)
# pylint: disable-msg=protected-access
actions
.
do_complete
(
strategy
,
social_views
.
_do_login
)
# pylint: disable-msg=protected-access
mako_middleware_process_request
(
strategy
.
request
)
student_views
.
signin_user
(
strategy
.
request
)
student_views
.
signin_user
(
strategy
.
request
)
student_views
.
login_user
(
strategy
.
request
)
student_views
.
login_user
(
strategy
.
request
)
actions
.
do_complete
(
strategy
,
social_views
.
_do_login
,
user
=
user
)
# pylint: disable-msg=protected-access
actions
.
do_complete
(
strategy
,
social_views
.
_do_login
,
user
=
user
)
# pylint: disable-msg=protected-access
...
@@ -508,6 +513,8 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
...
@@ -508,6 +513,8 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
self
.
client
.
get
(
'/login'
)
self
.
client
.
get
(
'/login'
)
self
.
client
.
get
(
pipeline
.
get_login_url
(
self
.
PROVIDER_CLASS
.
NAME
,
pipeline
.
AUTH_ENTRY_LOGIN
))
self
.
client
.
get
(
pipeline
.
get_login_url
(
self
.
PROVIDER_CLASS
.
NAME
,
pipeline
.
AUTH_ENTRY_LOGIN
))
actions
.
do_complete
(
strategy
,
social_views
.
_do_login
)
# pylint: disable-msg=protected-access
actions
.
do_complete
(
strategy
,
social_views
.
_do_login
)
# pylint: disable-msg=protected-access
mako_middleware_process_request
(
strategy
.
request
)
student_views
.
signin_user
(
strategy
.
request
)
student_views
.
signin_user
(
strategy
.
request
)
student_views
.
login_user
(
strategy
.
request
)
student_views
.
login_user
(
strategy
.
request
)
actions
.
do_complete
(
strategy
,
social_views
.
_do_login
,
user
=
user
)
# pylint: disable-msg=protected-access
actions
.
do_complete
(
strategy
,
social_views
.
_do_login
,
user
=
user
)
# pylint: disable-msg=protected-access
...
@@ -547,6 +554,7 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
...
@@ -547,6 +554,7 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
# pylint: disable-msg=protected-access
# pylint: disable-msg=protected-access
self
.
assert_redirect_to_login_looks_correct
(
actions
.
do_complete
(
strategy
,
social_views
.
_do_login
))
self
.
assert_redirect_to_login_looks_correct
(
actions
.
do_complete
(
strategy
,
social_views
.
_do_login
))
mako_middleware_process_request
(
strategy
.
request
)
# At this point we know the pipeline has resumed correctly. Next we
# At this point we know the pipeline has resumed correctly. Next we
# fire off the view that displays the login form and posts it via JS.
# fire off the view that displays the login form and posts it via JS.
self
.
assert_login_response_in_pipeline_looks_correct
(
student_views
.
signin_user
(
strategy
.
request
))
self
.
assert_login_response_in_pipeline_looks_correct
(
student_views
.
signin_user
(
strategy
.
request
))
...
@@ -568,6 +576,7 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
...
@@ -568,6 +576,7 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
user
.
is_active
=
False
user
.
is_active
=
False
user
.
save
()
user
.
save
()
mako_middleware_process_request
(
strategy
.
request
)
self
.
assert_json_failure_response_is_inactive_account
(
student_views
.
login_user
(
strategy
.
request
))
self
.
assert_json_failure_response_is_inactive_account
(
student_views
.
login_user
(
strategy
.
request
))
def
test_signin_fails_if_no_account_associated
(
self
):
def
test_signin_fails_if_no_account_associated
(
self
):
...
@@ -613,6 +622,7 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
...
@@ -613,6 +622,7 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
# pylint:disable-msg=protected-access
# pylint:disable-msg=protected-access
self
.
assert_redirect_to_register_looks_correct
(
actions
.
do_complete
(
strategy
,
social_views
.
_do_login
))
self
.
assert_redirect_to_register_looks_correct
(
actions
.
do_complete
(
strategy
,
social_views
.
_do_login
))
mako_middleware_process_request
(
strategy
.
request
)
# At this point we know the pipeline has resumed correctly. Next we
# At this point we know the pipeline has resumed correctly. Next we
# fire off the view that displays the registration form.
# fire off the view that displays the registration form.
self
.
assert_register_response_in_pipeline_looks_correct
(
self
.
assert_register_response_in_pipeline_looks_correct
(
...
@@ -672,6 +682,8 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
...
@@ -672,6 +682,8 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
strategy
.
backend
.
auth_complete
=
mock
.
MagicMock
(
return_value
=
self
.
fake_auth_complete
(
strategy
))
strategy
.
backend
.
auth_complete
=
mock
.
MagicMock
(
return_value
=
self
.
fake_auth_complete
(
strategy
))
# pylint:disable-msg=protected-access
# pylint:disable-msg=protected-access
self
.
assert_redirect_to_register_looks_correct
(
actions
.
do_complete
(
strategy
,
social_views
.
_do_login
))
self
.
assert_redirect_to_register_looks_correct
(
actions
.
do_complete
(
strategy
,
social_views
.
_do_login
))
mako_middleware_process_request
(
strategy
.
request
)
self
.
assert_register_response_in_pipeline_looks_correct
(
self
.
assert_register_response_in_pipeline_looks_correct
(
student_views
.
register_user
(
strategy
.
request
),
pipeline
.
get
(
request
)[
'kwargs'
])
student_views
.
register_user
(
strategy
.
request
),
pipeline
.
get
(
request
)[
'kwargs'
])
strategy
.
request
.
POST
=
self
.
get_registration_post_vars
()
strategy
.
request
.
POST
=
self
.
get_registration_post_vars
()
...
...
lms/djangoapps/branding/tests.py
View file @
d96de424
...
@@ -15,6 +15,7 @@ from xmodule.modulestore.tests.factories import CourseFactory
...
@@ -15,6 +15,7 @@ from xmodule.modulestore.tests.factories import CourseFactory
from
courseware.tests.tests
import
TEST_DATA_MONGO_MODULESTORE
from
courseware.tests.tests
import
TEST_DATA_MONGO_MODULESTORE
import
student.views
import
student.views
from
branding.views
import
index
from
branding.views
import
index
from
edxmako.tests
import
mako_middleware_process_request
FEATURES_WITH_STARTDATE
=
settings
.
FEATURES
.
copy
()
FEATURES_WITH_STARTDATE
=
settings
.
FEATURES
.
copy
()
FEATURES_WITH_STARTDATE
[
'DISABLE_START_DATES'
]
=
False
FEATURES_WITH_STARTDATE
[
'DISABLE_START_DATES'
]
=
False
...
@@ -45,6 +46,8 @@ class AnonymousIndexPageTest(ModuleStoreTestCase):
...
@@ -45,6 +46,8 @@ class AnonymousIndexPageTest(ModuleStoreTestCase):
"""
"""
request
=
self
.
factory
.
get
(
'/'
)
request
=
self
.
factory
.
get
(
'/'
)
request
.
user
=
AnonymousUser
()
request
.
user
=
AnonymousUser
()
mako_middleware_process_request
(
request
)
student
.
views
.
index
(
request
)
student
.
views
.
index
(
request
)
@override_settings
(
FEATURES
=
FEATURES_WITH_STARTDATE
)
@override_settings
(
FEATURES
=
FEATURES_WITH_STARTDATE
)
...
...
lms/djangoapps/courseware/tests/test_views.py
View file @
d96de424
...
@@ -20,6 +20,7 @@ from django.core.urlresolvers import reverse
...
@@ -20,6 +20,7 @@ from django.core.urlresolvers import reverse
from
student.models
import
CourseEnrollment
from
student.models
import
CourseEnrollment
from
student.tests.factories
import
AdminFactory
from
student.tests.factories
import
AdminFactory
from
edxmako.middleware
import
MakoMiddleware
from
edxmako.middleware
import
MakoMiddleware
from
edxmako.tests
import
mako_middleware_process_request
from
opaque_keys.edx.locations
import
Location
from
opaque_keys.edx.locations
import
Location
from
xmodule.modulestore.django
import
modulestore
from
xmodule.modulestore.django
import
modulestore
...
@@ -413,6 +414,8 @@ class TestProgressDueDate(BaseDueDateTests):
...
@@ -413,6 +414,8 @@ class TestProgressDueDate(BaseDueDateTests):
def
get_text
(
self
,
course
):
def
get_text
(
self
,
course
):
""" Returns the HTML for the progress page """
""" Returns the HTML for the progress page """
mako_middleware_process_request
(
self
.
request
)
return
views
.
progress
(
self
.
request
,
course
.
id
.
to_deprecated_string
(),
self
.
user
.
id
)
.
content
return
views
.
progress
(
self
.
request
,
course
.
id
.
to_deprecated_string
(),
self
.
user
.
id
)
.
content
...
...
lms/djangoapps/django_comment_client/forum/tests.py
View file @
d96de424
...
@@ -4,6 +4,7 @@ from django.test.utils import override_settings
...
@@ -4,6 +4,7 @@ from django.test.utils import override_settings
from
django.test.client
import
Client
,
RequestFactory
from
django.test.client
import
Client
,
RequestFactory
from
xmodule.modulestore.tests.factories
import
CourseFactory
from
xmodule.modulestore.tests.factories
import
CourseFactory
from
student.tests.factories
import
UserFactory
,
CourseEnrollmentFactory
from
student.tests.factories
import
UserFactory
,
CourseEnrollmentFactory
from
edxmako.tests
import
mako_middleware_process_request
from
xmodule.modulestore.tests.django_utils
import
ModuleStoreTestCase
from
xmodule.modulestore.tests.django_utils
import
ModuleStoreTestCase
from
django.core.urlresolvers
import
reverse
from
django.core.urlresolvers
import
reverse
from
util.testing
import
UrlResetMixin
from
util.testing
import
UrlResetMixin
...
@@ -276,6 +277,8 @@ class UserProfileTestCase(ModuleStoreTestCase):
...
@@ -276,6 +277,8 @@ class UserProfileTestCase(ModuleStoreTestCase):
mock_request
.
side_effect
=
make_mock_request_impl
(
self
.
TEST_THREAD_TEXT
,
self
.
TEST_THREAD_ID
)
mock_request
.
side_effect
=
make_mock_request_impl
(
self
.
TEST_THREAD_TEXT
,
self
.
TEST_THREAD_ID
)
request
=
RequestFactory
()
.
get
(
"dummy_url"
,
data
=
params
,
**
headers
)
request
=
RequestFactory
()
.
get
(
"dummy_url"
,
data
=
params
,
**
headers
)
request
.
user
=
self
.
student
request
.
user
=
self
.
student
mako_middleware_process_request
(
request
)
response
=
views
.
user_profile
(
response
=
views
.
user_profile
(
request
,
request
,
self
.
course
.
id
.
to_deprecated_string
(),
self
.
course
.
id
.
to_deprecated_string
(),
...
...
lms/djangoapps/instructor/tests/test_legacy_xss.py
View file @
d96de424
...
@@ -9,6 +9,7 @@ from markupsafe import escape
...
@@ -9,6 +9,7 @@ from markupsafe import escape
from
courseware.tests.tests
import
TEST_DATA_MIXED_MODULESTORE
from
courseware.tests.tests
import
TEST_DATA_MIXED_MODULESTORE
from
student.tests.factories
import
UserFactory
,
CourseEnrollmentFactory
from
student.tests.factories
import
UserFactory
,
CourseEnrollmentFactory
from
edxmako.tests
import
mako_middleware_process_request
from
xmodule.modulestore.tests.django_utils
import
ModuleStoreTestCase
from
xmodule.modulestore.tests.django_utils
import
ModuleStoreTestCase
from
xmodule.modulestore.tests.factories
import
CourseFactory
from
xmodule.modulestore.tests.factories
import
CourseFactory
...
@@ -48,6 +49,8 @@ class TestXss(ModuleStoreTestCase):
...
@@ -48,6 +49,8 @@ class TestXss(ModuleStoreTestCase):
)
)
req
.
user
=
self
.
_instructor
req
.
user
=
self
.
_instructor
req
.
session
=
{}
req
.
session
=
{}
mako_middleware_process_request
(
req
)
resp
=
legacy
.
instructor_dashboard
(
req
,
self
.
_course
.
id
.
to_deprecated_string
())
resp
=
legacy
.
instructor_dashboard
(
req
,
self
.
_course
.
id
.
to_deprecated_string
())
respUnicode
=
resp
.
content
.
decode
(
settings
.
DEFAULT_CHARSET
)
respUnicode
=
resp
.
content
.
decode
(
settings
.
DEFAULT_CHARSET
)
self
.
assertNotIn
(
self
.
_evil_student
.
profile
.
name
,
respUnicode
)
self
.
assertNotIn
(
self
.
_evil_student
.
profile
.
name
,
respUnicode
)
...
...
lms/djangoapps/notification_prefs/tests.py
View file @
d96de424
...
@@ -11,6 +11,7 @@ from mock import Mock, patch
...
@@ -11,6 +11,7 @@ from mock import Mock, patch
from
notification_prefs
import
NOTIFICATION_PREF_KEY
from
notification_prefs
import
NOTIFICATION_PREF_KEY
from
notification_prefs.views
import
ajax_enable
,
ajax_disable
,
ajax_status
,
set_subscription
,
UsernameCipher
from
notification_prefs.views
import
ajax_enable
,
ajax_disable
,
ajax_status
,
set_subscription
,
UsernameCipher
from
student.tests.factories
import
UserFactory
from
student.tests.factories
import
UserFactory
from
edxmako.tests
import
mako_middleware_process_request
from
user_api.models
import
UserPreference
from
user_api.models
import
UserPreference
from
util.testing
import
UrlResetMixin
from
util.testing
import
UrlResetMixin
...
@@ -220,6 +221,8 @@ class NotificationPrefViewTest(UrlResetMixin, TestCase):
...
@@ -220,6 +221,8 @@ class NotificationPrefViewTest(UrlResetMixin, TestCase):
def
test_user
(
user
):
def
test_user
(
user
):
request
=
self
.
request_factory
.
get
(
"dummy"
)
request
=
self
.
request_factory
.
get
(
"dummy"
)
request
.
user
=
AnonymousUser
()
request
.
user
=
AnonymousUser
()
mako_middleware_process_request
(
request
)
response
=
set_subscription
(
request
,
self
.
tokens
[
user
],
subscribe
=
False
)
response
=
set_subscription
(
request
,
self
.
tokens
[
user
],
subscribe
=
False
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertNotPrefExists
(
user
)
self
.
assertNotPrefExists
(
user
)
...
@@ -231,6 +234,8 @@ class NotificationPrefViewTest(UrlResetMixin, TestCase):
...
@@ -231,6 +234,8 @@ class NotificationPrefViewTest(UrlResetMixin, TestCase):
self
.
create_prefs
()
self
.
create_prefs
()
request
=
self
.
request_factory
.
get
(
"dummy"
)
request
=
self
.
request_factory
.
get
(
"dummy"
)
request
.
user
=
AnonymousUser
()
request
.
user
=
AnonymousUser
()
mako_middleware_process_request
(
request
)
set_subscription
(
request
,
self
.
tokens
[
self
.
user
],
False
)
set_subscription
(
request
,
self
.
tokens
[
self
.
user
],
False
)
response
=
set_subscription
(
request
,
self
.
tokens
[
self
.
user
],
subscribe
=
False
)
response
=
set_subscription
(
request
,
self
.
tokens
[
self
.
user
],
subscribe
=
False
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
...
@@ -242,6 +247,8 @@ class NotificationPrefViewTest(UrlResetMixin, TestCase):
...
@@ -242,6 +247,8 @@ class NotificationPrefViewTest(UrlResetMixin, TestCase):
self
.
assertFalse
(
UserPreference
.
objects
.
filter
(
user
=
user
,
key
=
NOTIFICATION_PREF_KEY
))
self
.
assertFalse
(
UserPreference
.
objects
.
filter
(
user
=
user
,
key
=
NOTIFICATION_PREF_KEY
))
request
=
self
.
request_factory
.
get
(
"dummy"
)
request
=
self
.
request_factory
.
get
(
"dummy"
)
request
.
user
=
AnonymousUser
()
request
.
user
=
AnonymousUser
()
mako_middleware_process_request
(
request
)
response
=
set_subscription
(
request
,
self
.
tokens
[
user
],
subscribe
=
True
)
response
=
set_subscription
(
request
,
self
.
tokens
[
user
],
subscribe
=
True
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertPrefValid
(
user
)
self
.
assertPrefValid
(
user
)
...
...
lms/djangoapps/open_ended_grading/tests.py
View file @
d96de424
...
@@ -3,6 +3,7 @@ Tests for open ended grading interfaces
...
@@ -3,6 +3,7 @@ Tests for open ended grading interfaces
./manage.py lms --settings test test lms/djangoapps/open_ended_grading
./manage.py lms --settings test test lms/djangoapps/open_ended_grading
"""
"""
from
django.test
import
RequestFactory
import
json
import
json
import
logging
import
logging
...
@@ -29,6 +30,7 @@ from courseware.tests.modulestore_config import TEST_DATA_MIXED_MODULESTORE
...
@@ -29,6 +30,7 @@ from courseware.tests.modulestore_config import TEST_DATA_MIXED_MODULESTORE
from
lms.lib.xblock.runtime
import
LmsModuleSystem
from
lms.lib.xblock.runtime
import
LmsModuleSystem
from
student.roles
import
CourseStaffRole
from
student.roles
import
CourseStaffRole
from
edxmako.shortcuts
import
render_to_string
from
edxmako.shortcuts
import
render_to_string
from
edxmako.tests
import
mako_middleware_process_request
from
student.models
import
unique_id_for_user
from
student.models
import
unique_id_for_user
from
open_ended_grading
import
staff_grading_service
,
views
,
utils
from
open_ended_grading
import
staff_grading_service
,
views
,
utils
...
@@ -471,7 +473,12 @@ class TestPanel(ModuleStoreTestCase):
...
@@ -471,7 +473,12 @@ class TestPanel(ModuleStoreTestCase):
Ensure that the problem list from the grading controller server can be rendered properly locally
Ensure that the problem list from the grading controller server can be rendered properly locally
@return:
@return:
"""
"""
request
=
Mock
(
user
=
self
.
user
)
request
=
RequestFactory
()
.
get
(
reverse
(
"open_ended_problems"
,
kwargs
=
{
'course_id'
:
self
.
course_key
})
)
request
.
user
=
self
.
user
mako_middleware_process_request
(
request
)
response
=
views
.
student_problem_list
(
request
,
self
.
course
.
id
.
to_deprecated_string
())
response
=
views
.
student_problem_list
(
request
,
self
.
course
.
id
.
to_deprecated_string
())
self
.
assertRegexpMatches
(
response
.
content
,
"Here is a list of open ended problems for this course."
)
self
.
assertRegexpMatches
(
response
.
content
,
"Here is a list of open ended problems for this course."
)
...
...
lms/templates/instructor/instructor_dashboard_2/e-commerce.html
View file @
d96de424
...
@@ -84,7 +84,7 @@
...
@@ -84,7 +84,7 @@
<th
class=
"c_code"
>
${_("Code")}
</th>
<th
class=
"c_code"
>
${_("Code")}
</th>
<th
class=
"c_dsc"
>
${_("Description")}
</th>
<th
class=
"c_dsc"
>
${_("Description")}
</th>
<th
class=
"c_course_id"
>
${_("Course_id")}
</th>
<th
class=
"c_course_id"
>
${_("Course_id")}
</th>
<th
class=
"c_discount"
>
${_("Discount(%)")}
</th>
<th
class=
"c_discount"
>
${_("Discount
(%)")}
</th>
<th
class=
"c_count"
>
${_("Count")}
</th>
<th
class=
"c_count"
>
${_("Count")}
</th>
<th
class=
"c_action"
>
${_("Actions")}
</th>
<th
class=
"c_action"
>
${_("Actions")}
</th>
</tr>
</tr>
...
@@ -120,7 +120,7 @@
...
@@ -120,7 +120,7 @@
</div>
</div>
<script>
<script>
$
(
function
()
{
$
(
function
()
{
var
icons
=
{
var
icons
=
{
header
:
"ui-icon-circle-arrow-e"
,
header
:
"ui-icon-circle-arrow-e"
,
activeHeader
:
"ui-icon-circle-arrow-s"
activeHeader
:
"ui-icon-circle-arrow-s"
...
@@ -140,7 +140,7 @@
...
@@ -140,7 +140,7 @@
active
:
isNaN
(
parseInt
(
$
.
cookie
(
'saved_index'
)))
?
0
:
parseInt
(
$
.
cookie
(
'saved_index'
)),
active
:
isNaN
(
parseInt
(
$
.
cookie
(
'saved_index'
)))
?
0
:
parseInt
(
$
.
cookie
(
'saved_index'
)),
collapsible
:
true
collapsible
:
true
});
});
$
(
'a[rel*=leanModal]'
).
leanModal
();
$
(
'a[rel*=leanModal]'
).
leanModal
();
$
.
each
(
$
(
"a.edit-right"
),
function
()
{
$
.
each
(
$
(
"a.edit-right"
),
function
()
{
if
(
$
(
this
).
parent
().
parent
(
'tr'
).
hasClass
(
'inactive_coupon'
))
{
if
(
$
(
this
).
parent
().
parent
(
'tr'
).
hasClass
(
'inactive_coupon'
))
{
...
@@ -211,7 +211,7 @@
...
@@ -211,7 +211,7 @@
// Get the Code and Discount value and trim it
// Get the Code and Discount value and trim it
var
code
=
$
.
trim
(
$
(
'#edit_coupon_code'
).
val
());
var
code
=
$
.
trim
(
$
(
'#edit_coupon_code'
).
val
());
var
coupon_discount
=
$
.
trim
(
$
(
'#edit_coupon_discount'
).
val
());
var
coupon_discount
=
$
.
trim
(
$
(
'#edit_coupon_discount'
).
val
());
// Check if empty of not
// Check if empty of not
if
(
code
===
''
)
{
if
(
code
===
''
)
{
$
(
'#edit_coupon_form #coupon_form_error'
).
attr
(
'style'
,
'display: block !important'
);
$
(
'#edit_coupon_form #coupon_form_error'
).
attr
(
'style'
,
'display: block !important'
);
...
@@ -249,7 +249,7 @@
...
@@ -249,7 +249,7 @@
// Get the Code and Discount value and trim it
// Get the Code and Discount value and trim it
var
course_price
=
$
.
trim
(
$
(
'#mode_price'
).
val
());
var
course_price
=
$
.
trim
(
$
(
'#mode_price'
).
val
());
var
currency
=
$
.
trim
(
$
(
'#course_mode_currency'
).
val
());
var
currency
=
$
.
trim
(
$
(
'#course_mode_currency'
).
val
());
// Check if empty of not
// Check if empty of not
if
(
course_price
===
''
)
{
if
(
course_price
===
''
)
{
$
(
'#set_price_form #course_form_error'
).
attr
(
'style'
,
'display: block !important'
);
$
(
'#set_price_form #course_form_error'
).
attr
(
'style'
,
'display: block !important'
);
...
@@ -275,7 +275,7 @@
...
@@ -275,7 +275,7 @@
// Get the Code and Discount value and trim it
// Get the Code and Discount value and trim it
var
code
=
$
.
trim
(
$
(
'#coupon_code'
).
val
());
var
code
=
$
.
trim
(
$
(
'#coupon_code'
).
val
());
var
coupon_discount
=
$
.
trim
(
$
(
'#coupon_discount'
).
val
());
var
coupon_discount
=
$
.
trim
(
$
(
'#coupon_discount'
).
val
());
// Check if empty of not
// Check if empty of not
if
(
code
===
''
)
{
if
(
code
===
''
)
{
$
(
"#add_coupon_button"
).
removeAttr
(
'disabled'
);
$
(
"#add_coupon_button"
).
removeAttr
(
'disabled'
);
...
@@ -302,7 +302,7 @@
...
@@ -302,7 +302,7 @@
return
false
;
return
false
;
}
}
});
});
$
(
'#set_price_form'
).
on
(
'ajax:complete'
,
function
(
event
,
xhr
)
{
$
(
'#set_price_form'
).
on
(
'ajax:complete'
,
function
(
event
,
xhr
)
{
if
(
xhr
.
status
==
200
)
{
if
(
xhr
.
status
==
200
)
{
location
.
reload
(
true
);
location
.
reload
(
true
);
...
@@ -312,7 +312,7 @@
...
@@ -312,7 +312,7 @@
$
(
'#set_price_form #course_form_error'
).
text
(
xhr
.
responseText
);
$
(
'#set_price_form #course_form_error'
).
text
(
xhr
.
responseText
);
}
}
});
});
$
(
'#add_coupon_form'
).
on
(
'ajax:complete'
,
function
(
event
,
xhr
)
{
$
(
'#add_coupon_form'
).
on
(
'ajax:complete'
,
function
(
event
,
xhr
)
{
if
(
xhr
.
status
==
200
)
{
if
(
xhr
.
status
==
200
)
{
location
.
reload
(
true
);
location
.
reload
(
true
);
...
@@ -322,7 +322,7 @@
...
@@ -322,7 +322,7 @@
$
(
'#add_coupon_form #coupon_form_error'
).
text
(
xhr
.
responseText
);
$
(
'#add_coupon_form #coupon_form_error'
).
text
(
xhr
.
responseText
);
}
}
});
});
$
(
'#edit_coupon_form'
).
on
(
'ajax:complete'
,
function
(
event
,
xhr
)
{
$
(
'#edit_coupon_form'
).
on
(
'ajax:complete'
,
function
(
event
,
xhr
)
{
if
(
xhr
.
status
==
200
)
{
if
(
xhr
.
status
==
200
)
{
location
.
reload
(
true
);
location
.
reload
(
true
);
...
@@ -340,7 +340,7 @@
...
@@ -340,7 +340,7 @@
reset_input_fields
();
reset_input_fields
();
e
.
preventDefault
();
e
.
preventDefault
();
});
});
var
onModalClose
=
function
()
{
var
onModalClose
=
function
()
{
$
(
"#add-coupon-modal"
).
attr
(
"aria-hidden"
,
"true"
);
$
(
"#add-coupon-modal"
).
attr
(
"aria-hidden"
,
"true"
);
$
(
".remove_coupon"
).
focus
();
$
(
".remove_coupon"
).
focus
();
...
@@ -352,7 +352,7 @@
...
@@ -352,7 +352,7 @@
$
(
"#update_coupon_button"
).
removeAttr
(
'disabled'
);
$
(
"#update_coupon_button"
).
removeAttr
(
'disabled'
);
reset_input_fields
();
reset_input_fields
();
};
};
var
cycle_modal_tab
=
function
(
from_element_name
,
to_element_name
)
{
var
cycle_modal_tab
=
function
(
from_element_name
,
to_element_name
)
{
$
(
from_element_name
).
on
(
'keydown'
,
function
(
e
)
{
$
(
from_element_name
).
on
(
'keydown'
,
function
(
e
)
{
var
keyCode
=
e
.
keyCode
||
e
.
which
;
var
keyCode
=
e
.
keyCode
||
e
.
which
;
...
@@ -363,12 +363,12 @@
...
@@ -363,12 +363,12 @@
}
}
});
});
};
};
$
(
"#add-coupon-modal .close-modal"
).
click
(
onModalClose
);
$
(
"#add-coupon-modal .close-modal"
).
click
(
onModalClose
);
$
(
"#edit-coupon-modal .close-modal"
).
click
(
onModalClose
);
$
(
"#edit-coupon-modal .close-modal"
).
click
(
onModalClose
);
$
(
"#set-course-mode-price-modal .close-modal"
).
click
(
reset_input_fields
);
$
(
"#set-course-mode-price-modal .close-modal"
).
click
(
reset_input_fields
);
// Hitting the ESC key will exit the modal
// Hitting the ESC key will exit the modal
$
(
"#add-coupon-modal, #edit-coupon-modal, #set-course-mode-price-modal"
).
on
(
"keydown"
,
function
(
e
)
{
$
(
"#add-coupon-modal, #edit-coupon-modal, #set-course-mode-price-modal"
).
on
(
"keydown"
,
function
(
e
)
{
var
keyCode
=
e
.
keyCode
||
e
.
which
;
var
keyCode
=
e
.
keyCode
||
e
.
which
;
...
@@ -391,6 +391,6 @@
...
@@ -391,6 +391,6 @@
$
(
'input#coupon_code'
).
val
(
''
);
$
(
'input#coupon_code'
).
val
(
''
);
$
(
'input#coupon_discount'
).
val
(
''
);
$
(
'input#coupon_discount'
).
val
(
''
);
$
(
'textarea#coupon_description'
).
val
(
''
);
$
(
'textarea#coupon_description'
).
val
(
''
);
}
}
</script>
</script>
\ No newline at end of file
requirements/edx/github.txt
View file @
d96de424
...
@@ -27,7 +27,7 @@
...
@@ -27,7 +27,7 @@
-e git+https://github.com/edx/bok-choy.git@9162c0bfb8e0eb1e2fa8e6df8dec12d181322a90#egg=bok_choy
-e git+https://github.com/edx/bok-choy.git@9162c0bfb8e0eb1e2fa8e6df8dec12d181322a90#egg=bok_choy
-e git+https://github.com/edx-solutions/django-splash.git@9965a53c269666a30bb4e2b3f6037c138aef2a55#egg=django-splash
-e git+https://github.com/edx-solutions/django-splash.git@9965a53c269666a30bb4e2b3f6037c138aef2a55#egg=django-splash
-e git+https://github.com/edx/acid-block.git@459aff7b63db8f2c5decd1755706c1a64fb4ebb1#egg=acid-xblock
-e git+https://github.com/edx/acid-block.git@459aff7b63db8f2c5decd1755706c1a64fb4ebb1#egg=acid-xblock
-e git+https://github.com/edx/edx-ora2.git@
release-2014-07-28T12.09
#egg=edx-ora2
-e git+https://github.com/edx/edx-ora2.git@
hotfix-2014-08-06
#egg=edx-ora2
-e git+https://github.com/edx/opaque-keys.git@454bd984d9539550c6290020e92ee2d6094038d0#egg=opaque-keys
-e git+https://github.com/edx/opaque-keys.git@454bd984d9539550c6290020e92ee2d6094038d0#egg=opaque-keys
-e git+https://github.com/edx/ease.git@97de68448e5495385ba043d3091f570a699d5b5f#egg=ease
-e git+https://github.com/edx/ease.git@97de68448e5495385ba043d3091f570a699d5b5f#egg=ease
-e git+https://github.com/edx/i18n-tools.git@f5303e82dff368c7595884d9325aeea1d802da25#egg=i18n-tools
-e git+https://github.com/edx/i18n-tools.git@f5303e82dff368c7595884d9325aeea1d802da25#egg=i18n-tools
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