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
4b512626
Commit
4b512626
authored
May 02, 2017
by
Calen Pennington
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Reset the SESSION language when the language-preference cookie changes
parent
ec6dfeea
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
22 additions
and
13 deletions
+22
-13
openedx/core/djangoapps/lang_pref/middleware.py
+4
-0
openedx/core/djangoapps/lang_pref/tests/test_middleware.py
+18
-13
No files found.
openedx/core/djangoapps/lang_pref/middleware.py
View file @
4b512626
...
...
@@ -44,6 +44,10 @@ class LanguagePreferenceMiddleware(object):
accept_header
=
cookie_lang
request
.
META
[
LANGUAGE_HEADER
]
=
accept_header
# Allow the new cookie setting to update the language in the user's session
if
LANGUAGE_SESSION_KEY
in
request
.
session
and
request
.
session
[
LANGUAGE_SESSION_KEY
]
!=
cookie_lang
:
del
request
.
session
[
LANGUAGE_SESSION_KEY
]
def
process_response
(
self
,
request
,
response
):
# If the user is logged in, check for their language preference
if
getattr
(
request
,
'user'
,
None
)
and
request
.
user
.
is_authenticated
():
...
...
openedx/core/djangoapps/lang_pref/tests/test_middleware.py
View file @
4b512626
...
...
@@ -105,25 +105,30 @@ class TestUserPreferenceMiddleware(TestCase):
for
logged_in
in
(
True
,
False
)
for
test_def
in
[
# (LANGUAGE_COOKIE, LANGUAGE_SESSION_KEY, Accept-Language In, Accept-Language Out)
(
None
,
None
,
None
,
None
),
(
None
,
'eo'
,
None
,
None
),
(
None
,
'eo'
,
'en'
,
'en'
),
(
None
,
None
,
'en'
,
'en'
),
(
'en'
,
None
,
None
,
'en'
),
(
'en'
,
None
,
'eo'
,
'en;q=1.0,eo'
),
(
'en'
,
None
,
'en'
,
'en'
),
(
'en'
,
'eo'
,
'en'
,
'en'
),
(
'en'
,
'eo'
,
'eo'
,
'en;q=1.0,eo'
)
(
None
,
None
,
None
,
None
,
None
),
(
None
,
'eo'
,
None
,
None
,
'eo'
),
(
None
,
'en'
,
None
,
None
,
'en'
),
(
None
,
'eo'
,
'en'
,
'en'
,
'eo'
),
(
None
,
None
,
'en'
,
'en'
,
None
),
(
'en'
,
None
,
None
,
'en'
,
None
),
(
'en'
,
'en'
,
None
,
'en'
,
'en'
),
(
'en'
,
None
,
'eo'
,
'en;q=1.0,eo'
,
None
),
(
'en'
,
None
,
'en'
,
'en'
,
None
),
(
'en'
,
'eo'
,
'en'
,
'en'
,
None
),
(
'en'
,
'eo'
,
'eo'
,
'en;q=1.0,eo'
,
None
)
]
))
@ddt.unpack
def
test_preference_cookie_overrides_browser
(
self
,
logged_in
,
lang_cookie
,
lang_session
,
accept_lang_in
,
accept_lang_out
):
def
test_preference_cookie_overrides_browser
(
self
,
logged_in
,
lang_cookie
,
lang_session_in
,
accept_lang_in
,
accept_lang_out
,
lang_session_out
,
):
if
not
logged_in
:
self
.
request
.
user
=
self
.
anonymous_user
if
lang_cookie
:
self
.
request
.
COOKIES
[
settings
.
LANGUAGE_COOKIE
]
=
lang_cookie
if
lang_session
:
self
.
request
.
session
[
LANGUAGE_SESSION_KEY
]
=
lang_session
if
lang_session
_in
:
self
.
request
.
session
[
LANGUAGE_SESSION_KEY
]
=
lang_session
_in
if
accept_lang_in
:
self
.
request
.
META
[
'HTTP_ACCEPT_LANGUAGE'
]
=
accept_lang_in
else
:
...
...
@@ -143,7 +148,7 @@ class TestUserPreferenceMiddleware(TestCase):
else
:
self
.
assertEqual
(
accept_lang_result
,
accept_lang_out
)
self
.
assertEquals
(
self
.
request
.
session
.
get
(
LANGUAGE_SESSION_KEY
),
lang_session
)
self
.
assertEquals
(
self
.
request
.
session
.
get
(
LANGUAGE_SESSION_KEY
),
lang_session
_out
)
@ddt.data
(
None
,
'es'
,
'en'
)
def
test_logout_preserves_cookie
(
self
,
lang_cookie
):
...
...
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