summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorErik Romijn <eromijn@solidlinks.nl>2014-02-22 14:27:57 +0100
committerBaptiste Mispelon <bmispelon@gmail.com>2014-02-22 18:29:06 +0100
commit8cd32f09659cc271050a62b978f244b8a3445315 (patch)
tree1977c53088acef79e6ce0df237ade0899b1b4993 /django
parent09b725f51bbfa0f01b27ee2d718889926d409519 (diff)
Fixed #22120 -- Documented persistent activation of languages and cleaned up language session key use
Diffstat (limited to 'django')
-rw-r--r--django/contrib/auth/__init__.py5
-rw-r--r--django/contrib/auth/tests/test_views.py5
-rw-r--r--django/utils/translation/__init__.py1
-rw-r--r--django/utils/translation/trans_real.py4
-rw-r--r--django/views/i18n.py4
5 files changed, 11 insertions, 8 deletions
diff --git a/django/contrib/auth/__init__.py b/django/contrib/auth/__init__.py
index c3a1253564..1ae323e902 100644
--- a/django/contrib/auth/__init__.py
+++ b/django/contrib/auth/__init__.py
@@ -5,6 +5,7 @@ from django.apps import apps as django_apps
from django.conf import settings
from django.core.exceptions import ImproperlyConfigured, PermissionDenied
from django.utils.module_loading import import_string
+from django.utils.translation import LANGUAGE_SESSION_KEY
from django.middleware.csrf import rotate_token
from .signals import user_logged_in, user_logged_out, user_login_failed
@@ -108,12 +109,12 @@ def logout(request):
# remember language choice saved to session
# for backwards compatibility django_language is also checked (remove in 1.8)
- language = request.session.get('_language', request.session.get('django_language'))
+ language = request.session.get(LANGUAGE_SESSION_KEY, request.session.get('django_language'))
request.session.flush()
if language is not None:
- request.session['_language'] = language
+ request.session[LANGUAGE_SESSION_KEY] = language
if hasattr(request, 'user'):
from django.contrib.auth.models import AnonymousUser
diff --git a/django/contrib/auth/tests/test_views.py b/django/contrib/auth/tests/test_views.py
index d37afa3eee..605ed4462e 100644
--- a/django/contrib/auth/tests/test_views.py
+++ b/django/contrib/auth/tests/test_views.py
@@ -14,6 +14,7 @@ from django.http import QueryDict, HttpRequest
from django.utils.encoding import force_text
from django.utils.http import urlquote
from django.utils.six.moves.urllib.parse import urlparse, ParseResult
+from django.utils.translation import LANGUAGE_SESSION_KEY
from django.utils._os import upath
from django.test import TestCase, override_settings
from django.test.utils import patch_logger
@@ -718,12 +719,12 @@ class LogoutTest(AuthViewsTestCase):
# Create a new session with language
engine = import_module(settings.SESSION_ENGINE)
session = engine.SessionStore()
- session['_language'] = 'pl'
+ session[LANGUAGE_SESSION_KEY] = 'pl'
session.save()
self.client.cookies[settings.SESSION_COOKIE_NAME] = session.session_key
self.client.get('/logout/')
- self.assertEqual(self.client.session['_language'], 'pl')
+ self.assertEqual(self.client.session[LANGUAGE_SESSION_KEY], 'pl')
@skipIfCustomUser
diff --git a/django/utils/translation/__init__.py b/django/utils/translation/__init__.py
index 9d46ce67e4..54e1244c23 100644
--- a/django/utils/translation/__init__.py
+++ b/django/utils/translation/__init__.py
@@ -21,6 +21,7 @@ __all__ = [
'npgettext', 'npgettext_lazy',
]
+LANGUAGE_SESSION_KEY = '_language'
class TranslatorCommentWarning(SyntaxWarning):
pass
diff --git a/django/utils/translation/trans_real.py b/django/utils/translation/trans_real.py
index 29c133006e..ea872e1ec9 100644
--- a/django/utils/translation/trans_real.py
+++ b/django/utils/translation/trans_real.py
@@ -18,7 +18,7 @@ from django.utils._os import upath
from django.utils.safestring import mark_safe, SafeData
from django.utils import six, lru_cache
from django.utils.six import StringIO
-from django.utils.translation import TranslatorCommentWarning, trim_whitespace
+from django.utils.translation import TranslatorCommentWarning, trim_whitespace, LANGUAGE_SESSION_KEY
# Translations are cached in a dictionary for every language+app tuple.
@@ -478,7 +478,7 @@ def get_language_from_request(request, check_path=False):
if hasattr(request, 'session'):
# for backwards compatibility django_language is also checked (remove in 1.8)
- lang_code = request.session.get('_language', request.session.get('django_language'))
+ lang_code = request.session.get(LANGUAGE_SESSION_KEY, request.session.get('django_language'))
if lang_code in supported and lang_code is not None and check_for_language(lang_code):
return lang_code
diff --git a/django/views/i18n.py b/django/views/i18n.py
index 7182f4f3cd..a62ca29e54 100644
--- a/django/views/i18n.py
+++ b/django/views/i18n.py
@@ -7,7 +7,7 @@ from django import http
from django.apps import apps
from django.conf import settings
from django.template import Context, Template
-from django.utils.translation import check_for_language, to_locale, get_language
+from django.utils.translation import check_for_language, to_locale, get_language, LANGUAGE_SESSION_KEY
from django.utils.encoding import smart_text
from django.utils.formats import get_format_modules, get_format
from django.utils._os import upath
@@ -36,7 +36,7 @@ def set_language(request):
lang_code = request.POST.get('language', None)
if lang_code and check_for_language(lang_code):
if hasattr(request, 'session'):
- request.session['_language'] = lang_code
+ request.session[LANGUAGE_SESSION_KEY] = lang_code
else:
response.set_cookie(settings.LANGUAGE_COOKIE_NAME, lang_code)
return response