mirror of
https://github.com/django/django.git
synced 2025-08-04 10:59:45 +00:00
Fixed #22477 -- Removed contrib middleware from the global settings defaults.
Also added a compatibility check for changed middleware defaults.
Forwardport of d94de802d3
from stable/1.7.x
This commit is contained in:
parent
cc35bd461d
commit
4696cd9671
9 changed files with 131 additions and 15 deletions
|
@ -10,6 +10,7 @@ from django.core import checks
|
|||
from django.core.checks import Error, Warning
|
||||
from django.core.checks.registry import CheckRegistry
|
||||
from django.core.checks.compatibility.django_1_6_0 import check_1_6_compatibility
|
||||
from django.core.checks.compatibility.django_1_7_0 import check_1_7_compatibility
|
||||
from django.core.management.base import CommandError
|
||||
from django.core.management import call_command
|
||||
from django.db.models.fields import NOT_PROVIDED
|
||||
|
@ -148,6 +149,40 @@ class Django_1_6_0_CompatibilityChecks(TestCase):
|
|||
boolean_field.default = old_default
|
||||
|
||||
|
||||
class Django_1_7_0_CompatibilityChecks(TestCase):
|
||||
|
||||
@override_settings(MIDDLEWARE_CLASSES=('django.contrib.sessions.middleware.SessionMiddleware',))
|
||||
def test_middleware_classes_overridden(self):
|
||||
errors = check_1_7_compatibility()
|
||||
self.assertEqual(errors, [])
|
||||
|
||||
def test_middleware_classes_not_set_explicitly(self):
|
||||
# If MIDDLEWARE_CLASSES was set explicitly, temporarily pretend it wasn't
|
||||
middleware_classes_overridden = False
|
||||
if 'MIDDLEWARE_CLASSES' in settings._wrapped._explicit_settings:
|
||||
middleware_classes_overridden = True
|
||||
settings._wrapped._explicit_settings.remove('MIDDLEWARE_CLASSES')
|
||||
try:
|
||||
errors = check_1_7_compatibility()
|
||||
expected = [
|
||||
checks.Warning(
|
||||
"MIDDLEWARE_CLASSES is not set.",
|
||||
hint=("Django 1.7 changed the global defaults for the MIDDLEWARE_CLASSES."
|
||||
"django.contrib.sessions.middleware.SessionMiddleware, "
|
||||
"django.contrib.auth.middleware.AuthenticationMiddleware, and "
|
||||
"django.contrib.messages.middleware.MessageMiddleware were removed from the defaults."
|
||||
"If your project needs these middleware then you should configure this setting."),
|
||||
obj=None,
|
||||
id='1_7.W001',
|
||||
)
|
||||
]
|
||||
self.assertEqual(errors, expected)
|
||||
finally:
|
||||
# Restore settings value
|
||||
if middleware_classes_overridden:
|
||||
settings._wrapped._explicit_settings.add('MIDDLEWARE_CLASSES')
|
||||
|
||||
|
||||
def simple_system_check(**kwargs):
|
||||
simple_system_check.kwargs = kwargs
|
||||
return []
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue