Loading django/middleware/locale.py +2 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ class LocaleMiddleware(object): translated to the language the user desires (if the language is available, of course). """ response_redirect_class = HttpResponseRedirect def __init__(self): self._supported_languages = OrderedDict(settings.LANGUAGES) Loading Loading @@ -52,7 +53,7 @@ class LocaleMiddleware(object): language_url = "%s://%s/%s%s" % ( 'https' if request.is_secure() else 'http', request.get_host(), language, request.get_full_path()) return HttpResponseRedirect(language_url) return self.response_redirect_class(language_url) # Store language back into session if it is not present if hasattr(request, 'session'): Loading docs/ref/middleware.txt +6 −0 Original line number Diff line number Diff line Loading @@ -151,6 +151,12 @@ Enables language selection based on data from the request. It customizes content for each user. See the :doc:`internationalization documentation </topics/i18n/translation>`. .. attribute:: LocaleMiddleware.response_redirect_class Defaults to :class:`~django.http.HttpResponseRedirect`. Subclass ``LocaleMiddleware`` and override the attribute to customize the redirects issued by the middleware. Message middleware ------------------ Loading docs/releases/1.7.txt +6 −0 Original line number Diff line number Diff line Loading @@ -267,6 +267,12 @@ Forms :func:`~django.forms.formsets.formset_factory` to allow validating a minimum number of submitted forms. Internationalization ^^^^^^^^^^^^^^^^^^^^ * The :attr:`django.middleware.locale.LocaleMiddleware.response_redirect_class` attribute allows you to customize the redirects issued by the middleware. Management Commands ^^^^^^^^^^^^^^^^^^^ Loading tests/i18n/patterns/tests.py +16 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ import os from django.core.exceptions import ImproperlyConfigured from django.core.urlresolvers import reverse, clear_url_caches from django.http import HttpResponsePermanentRedirect from django.middleware.locale import LocaleMiddleware from django.test import TestCase from django.test.utils import override_settings from django.template import Template, Context Loading @@ -11,6 +13,10 @@ from django.utils._os import upath from django.utils import translation class PermanentRedirectLocaleMiddleWare(LocaleMiddleware): response_redirect_class = HttpResponsePermanentRedirect @override_settings( USE_I18N=True, LOCALE_PATHS=( Loading Loading @@ -181,6 +187,16 @@ class URLRedirectTests(URLTestCaseBase): response = self.client.get(response['location']) self.assertEqual(response.status_code, 200) @override_settings( MIDDLEWARE_CLASSES=( 'i18n.patterns.tests.PermanentRedirectLocaleMiddleWare', 'django.middleware.common.CommonMiddleware', ), ) def test_custom_redirect_class(self): response = self.client.get('/account/register/', HTTP_ACCEPT_LANGUAGE='en') self.assertRedirects(response, '/en/account/register/', 301) class URLVaryAcceptLanguageTests(URLTestCaseBase): """ Loading Loading
django/middleware/locale.py +2 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ class LocaleMiddleware(object): translated to the language the user desires (if the language is available, of course). """ response_redirect_class = HttpResponseRedirect def __init__(self): self._supported_languages = OrderedDict(settings.LANGUAGES) Loading Loading @@ -52,7 +53,7 @@ class LocaleMiddleware(object): language_url = "%s://%s/%s%s" % ( 'https' if request.is_secure() else 'http', request.get_host(), language, request.get_full_path()) return HttpResponseRedirect(language_url) return self.response_redirect_class(language_url) # Store language back into session if it is not present if hasattr(request, 'session'): Loading
docs/ref/middleware.txt +6 −0 Original line number Diff line number Diff line Loading @@ -151,6 +151,12 @@ Enables language selection based on data from the request. It customizes content for each user. See the :doc:`internationalization documentation </topics/i18n/translation>`. .. attribute:: LocaleMiddleware.response_redirect_class Defaults to :class:`~django.http.HttpResponseRedirect`. Subclass ``LocaleMiddleware`` and override the attribute to customize the redirects issued by the middleware. Message middleware ------------------ Loading
docs/releases/1.7.txt +6 −0 Original line number Diff line number Diff line Loading @@ -267,6 +267,12 @@ Forms :func:`~django.forms.formsets.formset_factory` to allow validating a minimum number of submitted forms. Internationalization ^^^^^^^^^^^^^^^^^^^^ * The :attr:`django.middleware.locale.LocaleMiddleware.response_redirect_class` attribute allows you to customize the redirects issued by the middleware. Management Commands ^^^^^^^^^^^^^^^^^^^ Loading
tests/i18n/patterns/tests.py +16 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ import os from django.core.exceptions import ImproperlyConfigured from django.core.urlresolvers import reverse, clear_url_caches from django.http import HttpResponsePermanentRedirect from django.middleware.locale import LocaleMiddleware from django.test import TestCase from django.test.utils import override_settings from django.template import Template, Context Loading @@ -11,6 +13,10 @@ from django.utils._os import upath from django.utils import translation class PermanentRedirectLocaleMiddleWare(LocaleMiddleware): response_redirect_class = HttpResponsePermanentRedirect @override_settings( USE_I18N=True, LOCALE_PATHS=( Loading Loading @@ -181,6 +187,16 @@ class URLRedirectTests(URLTestCaseBase): response = self.client.get(response['location']) self.assertEqual(response.status_code, 200) @override_settings( MIDDLEWARE_CLASSES=( 'i18n.patterns.tests.PermanentRedirectLocaleMiddleWare', 'django.middleware.common.CommonMiddleware', ), ) def test_custom_redirect_class(self): response = self.client.get('/account/register/', HTTP_ACCEPT_LANGUAGE='en') self.assertRedirects(response, '/en/account/register/', 301) class URLVaryAcceptLanguageTests(URLTestCaseBase): """ Loading