Loading django/contrib/redirects/middleware.py +10 −1 Original line number Diff line number Diff line from __future__ import unicode_literals from django.conf import settings from django.contrib.redirects.models import Redirect from django.contrib.sites.models import get_current_site from django.core.exceptions import ImproperlyConfigured from django import http from django.conf import settings class RedirectFallbackMiddleware(object): def __init__(self): if 'django.contrib.sites' not in settings.INSTALLED_APPS: raise ImproperlyConfigured( "You cannot use RedirectFallbackMiddleware when " "django.contrib.sites is not installed." ) def process_response(self, request, response): if response.status_code != 404: return response # No need to check for a redirect for non-404 responses. Loading django/contrib/redirects/tests.py +9 −0 Original line number Diff line number Diff line from django.conf import settings from django.contrib.sites.models import Site from django.core.exceptions import ImproperlyConfigured from django.test import TestCase from django.test.utils import override_settings from django.utils import six from .middleware import RedirectFallbackMiddleware from .models import Redirect Loading Loading @@ -52,3 +54,10 @@ class RedirectTests(TestCase): site=self.site, old_path='/initial', new_path='') response = self.client.get('/initial') self.assertEqual(response.status_code, 410) @override_settings( INSTALLED_APPS=[app for app in settings.INSTALLED_APPS if app != 'django.contrib.sites']) def test_sites_not_installed(self): with self.assertRaises(ImproperlyConfigured): RedirectFallbackMiddleware() docs/ref/contrib/redirects.txt +5 −4 Original line number Diff line number Diff line Loading @@ -13,11 +13,12 @@ Installation To install the redirects app, follow these steps: 1. Add ``'django.contrib.redirects'`` to your :setting:`INSTALLED_APPS` setting. 2. Add ``'django.contrib.redirects.middleware.RedirectFallbackMiddleware'`` 1. Ensure that the ``django.contrib.sites`` framework :ref:`is installed <enabling-the-sites-framework>`. 2. Add ``'django.contrib.redirects'`` to your :setting:`INSTALLED_APPS` setting. 3. Add ``'django.contrib.redirects.middleware.RedirectFallbackMiddleware'`` to your :setting:`MIDDLEWARE_CLASSES` setting. 3. Run the command :djadmin:`manage.py syncdb <syncdb>`. 4. Run the command :djadmin:`manage.py syncdb <syncdb>`. How it works ============ Loading docs/ref/contrib/sites.txt +1 −0 Original line number Diff line number Diff line Loading @@ -246,6 +246,7 @@ To do this, you can use the sites framework. A simple example:: >>> 'http://%s%s' % (Site.objects.get_current().domain, obj.get_absolute_url()) 'http://example.com/mymodel/objects/3/' .. _enabling-the-sites-framework: Enabling the sites framework ============================ Loading docs/releases/1.5.txt +6 −0 Original line number Diff line number Diff line Loading @@ -653,6 +653,12 @@ Miscellaneous Attempting to load it with ``{% load adminmedia %}`` will fail. If your templates still contain that line you must remove it. * Because of an implementation oversight, it was possible to use :doc:`django.contrib.redirects </ref/contrib/redirects>` without enabling :doc:`django.contrib.sites </ref/contrib/sites>`. This isn't allowed any longer. If you're using ``django.contrib.redirects``, make sure :setting:``INSTALLED_APPS`` contains ``django.contrib.sites``. Features deprecated in 1.5 ========================== Loading Loading
django/contrib/redirects/middleware.py +10 −1 Original line number Diff line number Diff line from __future__ import unicode_literals from django.conf import settings from django.contrib.redirects.models import Redirect from django.contrib.sites.models import get_current_site from django.core.exceptions import ImproperlyConfigured from django import http from django.conf import settings class RedirectFallbackMiddleware(object): def __init__(self): if 'django.contrib.sites' not in settings.INSTALLED_APPS: raise ImproperlyConfigured( "You cannot use RedirectFallbackMiddleware when " "django.contrib.sites is not installed." ) def process_response(self, request, response): if response.status_code != 404: return response # No need to check for a redirect for non-404 responses. Loading
django/contrib/redirects/tests.py +9 −0 Original line number Diff line number Diff line from django.conf import settings from django.contrib.sites.models import Site from django.core.exceptions import ImproperlyConfigured from django.test import TestCase from django.test.utils import override_settings from django.utils import six from .middleware import RedirectFallbackMiddleware from .models import Redirect Loading Loading @@ -52,3 +54,10 @@ class RedirectTests(TestCase): site=self.site, old_path='/initial', new_path='') response = self.client.get('/initial') self.assertEqual(response.status_code, 410) @override_settings( INSTALLED_APPS=[app for app in settings.INSTALLED_APPS if app != 'django.contrib.sites']) def test_sites_not_installed(self): with self.assertRaises(ImproperlyConfigured): RedirectFallbackMiddleware()
docs/ref/contrib/redirects.txt +5 −4 Original line number Diff line number Diff line Loading @@ -13,11 +13,12 @@ Installation To install the redirects app, follow these steps: 1. Add ``'django.contrib.redirects'`` to your :setting:`INSTALLED_APPS` setting. 2. Add ``'django.contrib.redirects.middleware.RedirectFallbackMiddleware'`` 1. Ensure that the ``django.contrib.sites`` framework :ref:`is installed <enabling-the-sites-framework>`. 2. Add ``'django.contrib.redirects'`` to your :setting:`INSTALLED_APPS` setting. 3. Add ``'django.contrib.redirects.middleware.RedirectFallbackMiddleware'`` to your :setting:`MIDDLEWARE_CLASSES` setting. 3. Run the command :djadmin:`manage.py syncdb <syncdb>`. 4. Run the command :djadmin:`manage.py syncdb <syncdb>`. How it works ============ Loading
docs/ref/contrib/sites.txt +1 −0 Original line number Diff line number Diff line Loading @@ -246,6 +246,7 @@ To do this, you can use the sites framework. A simple example:: >>> 'http://%s%s' % (Site.objects.get_current().domain, obj.get_absolute_url()) 'http://example.com/mymodel/objects/3/' .. _enabling-the-sites-framework: Enabling the sites framework ============================ Loading
docs/releases/1.5.txt +6 −0 Original line number Diff line number Diff line Loading @@ -653,6 +653,12 @@ Miscellaneous Attempting to load it with ``{% load adminmedia %}`` will fail. If your templates still contain that line you must remove it. * Because of an implementation oversight, it was possible to use :doc:`django.contrib.redirects </ref/contrib/redirects>` without enabling :doc:`django.contrib.sites </ref/contrib/sites>`. This isn't allowed any longer. If you're using ``django.contrib.redirects``, make sure :setting:``INSTALLED_APPS`` contains ``django.contrib.sites``. Features deprecated in 1.5 ========================== Loading