Commit 354acd04 authored by Tim Graham's avatar Tim Graham
Browse files

Refs #26601 -- Added a warning if both MIDDLEWARE AND MIDDLEWARE_CLASSES are set.

parent ece4d24f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ from .registry import Tags, register, run_checks, tag_exists
# Import these to force registration of checks
import django.core.checks.caches  # NOQA isort:skip
import django.core.checks.compatibility.django_1_8_0  # NOQA isort:skip
import django.core.checks.compatibility.django_1_10  # NOQA isort:skip
import django.core.checks.database  # NOQA isort:skip
import django.core.checks.model_checks  # NOQA isort:skip
import django.core.checks.security.base  # NOQA isort:skip
+17 −0
Original line number Diff line number Diff line
from __future__ import unicode_literals

from django.conf import global_settings, settings

from .. import Tags, Warning, register


@register(Tags.compatibility)
def check_duplicate_middleware_settings(app_configs, **kwargs):
    if settings.MIDDLEWARE is not None and settings.MIDDLEWARE_CLASSES != global_settings.MIDDLEWARE_CLASSES:
        return [Warning(
            "The MIDDLEWARE_CLASSES setting is deprecated in Django 1.10 "
            "and the MIDDLEWARE setting takes precedence. Since you've set "
            "MIDDLEWARE, the value of MIDDLEWARE_CLASSES is ignored.",
            id='1_10.W001',
        )]
    return []
+3 −0
Original line number Diff line number Diff line
@@ -266,6 +266,9 @@ that might occur as a result of a version upgrade.
  put the values of the following settings into your defaults ``TEMPLATES``
  dict: ``TEMPLATE_DIRS``, ``TEMPLATE_CONTEXT_PROCESSORS``, ``TEMPLATE_DEBUG``,
  ``TEMPLATE_LOADERS``, ``TEMPLATE_STRING_IF_INVALID``.
* **1_10.W001**: The ``MIDDLEWARE_CLASSES`` setting is deprecated in Django
  1.10  and the :setting:`MIDDLEWARE` setting takes precedence. Since you've
  set ``MIDDLEWARE``, the value of ``MIDDLEWARE_CLASSES`` is ignored.

Admin
-----
+17 −0
Original line number Diff line number Diff line
from django.core.checks.compatibility.django_1_10 import \
    check_duplicate_middleware_settings
from django.test import SimpleTestCase
from django.test.utils import override_settings


class CheckDuplicateMiddlwareSettingsTest(SimpleTestCase):

    @override_settings(MIDDLEWARE=[], MIDDLEWARE_CLASSES=['django.middleware.common.CommonMiddleware'])
    def test_duplicate_setting(self):
        result = check_duplicate_middleware_settings(None)
        self.assertEqual(result[0].id, '1_10.W001')

    @override_settings(MIDDLEWARE=None)
    def test_middleware_not_defined(self):
        result = check_duplicate_middleware_settings(None)
        self.assertEqual(len(result), 0)