Loading django/contrib/sites/middleware.py 0 → 100644 +10 −0 Original line number Diff line number Diff line from .models import Site class CurrentSiteMiddleware(object): """ Middleware that sets `site` attribute to request object. """ def process_request(self, request): request.site = Site.objects.get_current() django/contrib/sites/tests.py +11 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.http import HttpRequest from django.test import TestCase, modify_settings, override_settings from .middleware import CurrentSiteMiddleware from .models import Site from .requests import RequestSite from .shortcuts import get_current_site Loading Loading @@ -79,3 +80,13 @@ class SitesFrameworkTests(TestCase): self.assertRaises(ValidationError, site.full_clean) site.domain = "test\ntest" self.assertRaises(ValidationError, site.full_clean) class MiddlewareTest(TestCase): def test_request(self): """ Makes sure that the request has correct `site` attribute. """ middleware = CurrentSiteMiddleware() request = HttpRequest() middleware.process_request(request) self.assertEqual(request.site.id, settings.SITE_ID) docs/ref/contrib/sites.txt +20 −0 Original line number Diff line number Diff line Loading @@ -373,6 +373,26 @@ your admin site to have access to all objects (not just site-specific ones), put ``objects = models.Manager()`` in your model, before you define :class:`~django.contrib.sites.managers.CurrentSiteManager`. .. _site-middleware: Site middleware =============== .. versionadded:: 1.7 If you often use this pattern:: from django.contrib.sites.models import Site def my_view(request): site = Site.objects.get_current() ... there is simple way to avoid repetitions. Add :class:`django.contrib.site.middleware.CurrentSiteMiddleware` to :setting:`MIDDLEWARE_CLASSES`. The middleware sets the ``site`` attribute on every request object, so you can use ``request.site`` to get the current site. How Django uses the sites framework =================================== Loading docs/ref/middleware.txt +13 −0 Original line number Diff line number Diff line Loading @@ -179,6 +179,19 @@ Session middleware Enables session support. See the :doc:`session documentation </topics/http/sessions>`. Site middleware --------------- .. module:: django.contrib.site.middleware :synopsis: Site middleware. .. class:: CurrentSiteMiddleware .. versionadded:: 1.7 Adds the ``site`` attribute representing the current site to every incoming ``HttpRequest`` object. See the :ref:`sites documentation <site-middleware>`. Authentication middleware ------------------------- Loading docs/releases/1.7.txt +6 −0 Original line number Diff line number Diff line Loading @@ -358,6 +358,12 @@ Minor features :class:`~django.middleware.http.ConditionalGetMiddleware` to handle conditional ``GET`` requests for sitemaps which set ``lastmod``. :mod:`django.contrib.sites` ^^^^^^^^^^^^^^^^^^^^^^^^^^^ * The new :class:`django.contrib.site.middleware.CurrentSiteMiddleware` allows setting the current site on each request. :mod:`django.contrib.staticfiles` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Loading Loading
django/contrib/sites/middleware.py 0 → 100644 +10 −0 Original line number Diff line number Diff line from .models import Site class CurrentSiteMiddleware(object): """ Middleware that sets `site` attribute to request object. """ def process_request(self, request): request.site = Site.objects.get_current()
django/contrib/sites/tests.py +11 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.http import HttpRequest from django.test import TestCase, modify_settings, override_settings from .middleware import CurrentSiteMiddleware from .models import Site from .requests import RequestSite from .shortcuts import get_current_site Loading Loading @@ -79,3 +80,13 @@ class SitesFrameworkTests(TestCase): self.assertRaises(ValidationError, site.full_clean) site.domain = "test\ntest" self.assertRaises(ValidationError, site.full_clean) class MiddlewareTest(TestCase): def test_request(self): """ Makes sure that the request has correct `site` attribute. """ middleware = CurrentSiteMiddleware() request = HttpRequest() middleware.process_request(request) self.assertEqual(request.site.id, settings.SITE_ID)
docs/ref/contrib/sites.txt +20 −0 Original line number Diff line number Diff line Loading @@ -373,6 +373,26 @@ your admin site to have access to all objects (not just site-specific ones), put ``objects = models.Manager()`` in your model, before you define :class:`~django.contrib.sites.managers.CurrentSiteManager`. .. _site-middleware: Site middleware =============== .. versionadded:: 1.7 If you often use this pattern:: from django.contrib.sites.models import Site def my_view(request): site = Site.objects.get_current() ... there is simple way to avoid repetitions. Add :class:`django.contrib.site.middleware.CurrentSiteMiddleware` to :setting:`MIDDLEWARE_CLASSES`. The middleware sets the ``site`` attribute on every request object, so you can use ``request.site`` to get the current site. How Django uses the sites framework =================================== Loading
docs/ref/middleware.txt +13 −0 Original line number Diff line number Diff line Loading @@ -179,6 +179,19 @@ Session middleware Enables session support. See the :doc:`session documentation </topics/http/sessions>`. Site middleware --------------- .. module:: django.contrib.site.middleware :synopsis: Site middleware. .. class:: CurrentSiteMiddleware .. versionadded:: 1.7 Adds the ``site`` attribute representing the current site to every incoming ``HttpRequest`` object. See the :ref:`sites documentation <site-middleware>`. Authentication middleware ------------------------- Loading
docs/releases/1.7.txt +6 −0 Original line number Diff line number Diff line Loading @@ -358,6 +358,12 @@ Minor features :class:`~django.middleware.http.ConditionalGetMiddleware` to handle conditional ``GET`` requests for sitemaps which set ``lastmod``. :mod:`django.contrib.sites` ^^^^^^^^^^^^^^^^^^^^^^^^^^^ * The new :class:`django.contrib.site.middleware.CurrentSiteMiddleware` allows setting the current site on each request. :mod:`django.contrib.staticfiles` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Loading