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

This commit is contained in:
Tim Graham 2016-05-09 19:58:47 -04:00
parent ece4d24f8e
commit 354acd04af
4 changed files with 38 additions and 0 deletions

View File

@ -10,6 +10,7 @@ from .registry import Tags, register, run_checks, tag_exists
# Import these to force registration of checks # Import these to force registration of checks
import django.core.checks.caches # NOQA isort:skip 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_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.database # NOQA isort:skip
import django.core.checks.model_checks # NOQA isort:skip import django.core.checks.model_checks # NOQA isort:skip
import django.core.checks.security.base # NOQA isort:skip import django.core.checks.security.base # NOQA isort:skip

View File

@ -0,0 +1,17 @@
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 []

View File

@ -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`` put the values of the following settings into your defaults ``TEMPLATES``
dict: ``TEMPLATE_DIRS``, ``TEMPLATE_CONTEXT_PROCESSORS``, ``TEMPLATE_DEBUG``, dict: ``TEMPLATE_DIRS``, ``TEMPLATE_CONTEXT_PROCESSORS``, ``TEMPLATE_DEBUG``,
``TEMPLATE_LOADERS``, ``TEMPLATE_STRING_IF_INVALID``. ``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 Admin
----- -----

View File

@ -0,0 +1,17 @@
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)