Fixed #30312 -- Relaxed admin check from django.contrib.sessions to SessionMiddleware subclasses.
This commit is contained in:
parent
85676979a4
commit
efeceba589
|
@ -65,7 +65,6 @@ def check_dependencies(**kwargs):
|
||||||
('django.contrib.contenttypes', 401),
|
('django.contrib.contenttypes', 401),
|
||||||
('django.contrib.auth', 405),
|
('django.contrib.auth', 405),
|
||||||
('django.contrib.messages', 406),
|
('django.contrib.messages', 406),
|
||||||
('django.contrib.sessions', 407),
|
|
||||||
)
|
)
|
||||||
for app_name, error_code in app_dependencies:
|
for app_name, error_code in app_dependencies:
|
||||||
if not apps.is_installed(app_name):
|
if not apps.is_installed(app_name):
|
||||||
|
@ -118,6 +117,12 @@ def check_dependencies(**kwargs):
|
||||||
"be in MIDDLEWARE in order to use the admin application.",
|
"be in MIDDLEWARE in order to use the admin application.",
|
||||||
id='admin.E409',
|
id='admin.E409',
|
||||||
))
|
))
|
||||||
|
if not _contains_subclass('django.contrib.sessions.middleware.SessionMiddleware', settings.MIDDLEWARE):
|
||||||
|
errors.append(checks.Error(
|
||||||
|
"'django.contrib.sessions.middleware.SessionMiddleware' must "
|
||||||
|
"be in MIDDLEWARE in order to use the admin application.",
|
||||||
|
id='admin.E410',
|
||||||
|
))
|
||||||
return errors
|
return errors
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -666,13 +666,13 @@ The following checks are performed on the default
|
||||||
:setting:`INSTALLED_APPS` in order to use the admin application.
|
:setting:`INSTALLED_APPS` in order to use the admin application.
|
||||||
* **admin.E406**: :mod:`django.contrib.messages` must be in
|
* **admin.E406**: :mod:`django.contrib.messages` must be in
|
||||||
:setting:`INSTALLED_APPS` in order to use the admin application.
|
:setting:`INSTALLED_APPS` in order to use the admin application.
|
||||||
* **admin.E407**: :mod:`django.contrib.sessions` must be in
|
|
||||||
:setting:`INSTALLED_APPS` in order to use the admin application.
|
|
||||||
* **admin.E408**:
|
* **admin.E408**:
|
||||||
:class:`django.contrib.auth.middleware.AuthenticationMiddleware` must be in
|
:class:`django.contrib.auth.middleware.AuthenticationMiddleware` must be in
|
||||||
:setting:`MIDDLEWARE` in order to use the admin application.
|
:setting:`MIDDLEWARE` in order to use the admin application.
|
||||||
* **admin.E409**: :class:`django.contrib.messages.middleware.MessageMiddleware`
|
* **admin.E409**: :class:`django.contrib.messages.middleware.MessageMiddleware`
|
||||||
must be in :setting:`MIDDLEWARE` in order to use the admin application.
|
must be in :setting:`MIDDLEWARE` in order to use the admin application.
|
||||||
|
* **admin.E410**: :class:`django.contrib.sessions.middleware.SessionMiddleware`
|
||||||
|
must be in :setting:`MIDDLEWARE` in order to use the admin application.
|
||||||
|
|
||||||
``auth``
|
``auth``
|
||||||
--------
|
--------
|
||||||
|
|
|
@ -49,3 +49,9 @@ Bugfixes
|
||||||
|
|
||||||
* Fixed a regression in Django 2.2 that caused an exception to be raised when
|
* Fixed a regression in Django 2.2 that caused an exception to be raised when
|
||||||
a custom error handler could not be imported (:ticket:`30318`).
|
a custom error handler could not be imported (:ticket:`30318`).
|
||||||
|
|
||||||
|
* Relaxed the system check added in Django 2.2 for the admin app's dependencies
|
||||||
|
to reallow use of
|
||||||
|
:class:`~django.contrib.sessions.middleware.SessionMiddleware` subclasses,
|
||||||
|
rather than requiring :mod:`django.contrib.sessions` to be in
|
||||||
|
:setting:`INSTALLED_APPS` (:ticket:`30312`).
|
||||||
|
|
|
@ -5,6 +5,7 @@ from django.contrib.auth.backends import ModelBackend
|
||||||
from django.contrib.auth.middleware import AuthenticationMiddleware
|
from django.contrib.auth.middleware import AuthenticationMiddleware
|
||||||
from django.contrib.contenttypes.admin import GenericStackedInline
|
from django.contrib.contenttypes.admin import GenericStackedInline
|
||||||
from django.contrib.messages.middleware import MessageMiddleware
|
from django.contrib.messages.middleware import MessageMiddleware
|
||||||
|
from django.contrib.sessions.middleware import SessionMiddleware
|
||||||
from django.core import checks
|
from django.core import checks
|
||||||
from django.test import SimpleTestCase, override_settings
|
from django.test import SimpleTestCase, override_settings
|
||||||
|
|
||||||
|
@ -52,13 +53,16 @@ class ModelBackendSubclass(ModelBackend):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class SessionMiddlewareSubclass(SessionMiddleware):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
@override_settings(
|
@override_settings(
|
||||||
SILENCED_SYSTEM_CHECKS=['fields.W342'], # ForeignKey(unique=True)
|
SILENCED_SYSTEM_CHECKS=['fields.W342'], # ForeignKey(unique=True)
|
||||||
INSTALLED_APPS=[
|
INSTALLED_APPS=[
|
||||||
'django.contrib.admin',
|
'django.contrib.admin',
|
||||||
'django.contrib.auth',
|
'django.contrib.auth',
|
||||||
'django.contrib.contenttypes',
|
'django.contrib.contenttypes',
|
||||||
'django.contrib.sessions',
|
|
||||||
'django.contrib.messages',
|
'django.contrib.messages',
|
||||||
'admin_checks',
|
'admin_checks',
|
||||||
],
|
],
|
||||||
|
@ -93,11 +97,6 @@ class SystemChecksTestCase(SimpleTestCase):
|
||||||
"to use the admin application.",
|
"to use the admin application.",
|
||||||
id='admin.E406',
|
id='admin.E406',
|
||||||
),
|
),
|
||||||
checks.Error(
|
|
||||||
"'django.contrib.sessions' must be in INSTALLED_APPS in order "
|
|
||||||
"to use the admin application.",
|
|
||||||
id='admin.E407',
|
|
||||||
)
|
|
||||||
]
|
]
|
||||||
self.assertEqual(errors, expected)
|
self.assertEqual(errors, expected)
|
||||||
|
|
||||||
|
@ -201,13 +200,19 @@ class SystemChecksTestCase(SimpleTestCase):
|
||||||
"'django.contrib.messages.middleware.MessageMiddleware' "
|
"'django.contrib.messages.middleware.MessageMiddleware' "
|
||||||
"must be in MIDDLEWARE in order to use the admin application.",
|
"must be in MIDDLEWARE in order to use the admin application.",
|
||||||
id='admin.E409',
|
id='admin.E409',
|
||||||
)
|
),
|
||||||
|
checks.Error(
|
||||||
|
"'django.contrib.sessions.middleware.SessionMiddleware' "
|
||||||
|
"must be in MIDDLEWARE in order to use the admin application.",
|
||||||
|
id='admin.E410',
|
||||||
|
),
|
||||||
]
|
]
|
||||||
self.assertEqual(errors, expected)
|
self.assertEqual(errors, expected)
|
||||||
|
|
||||||
@override_settings(MIDDLEWARE=[
|
@override_settings(MIDDLEWARE=[
|
||||||
'admin_checks.tests.AuthenticationMiddlewareSubclass',
|
'admin_checks.tests.AuthenticationMiddlewareSubclass',
|
||||||
'admin_checks.tests.MessageMiddlewareSubclass',
|
'admin_checks.tests.MessageMiddlewareSubclass',
|
||||||
|
'admin_checks.tests.SessionMiddlewareSubclass',
|
||||||
])
|
])
|
||||||
def test_middleware_subclasses(self):
|
def test_middleware_subclasses(self):
|
||||||
self.assertEqual(admin.checks.check_dependencies(), [])
|
self.assertEqual(admin.checks.check_dependencies(), [])
|
||||||
|
@ -216,6 +221,7 @@ class SystemChecksTestCase(SimpleTestCase):
|
||||||
'django.contrib.does.not.Exist',
|
'django.contrib.does.not.Exist',
|
||||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||||
'django.contrib.messages.middleware.MessageMiddleware',
|
'django.contrib.messages.middleware.MessageMiddleware',
|
||||||
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
])
|
])
|
||||||
def test_admin_check_ignores_import_error_in_middleware(self):
|
def test_admin_check_ignores_import_error_in_middleware(self):
|
||||||
self.assertEqual(admin.checks.check_dependencies(), [])
|
self.assertEqual(admin.checks.check_dependencies(), [])
|
||||||
|
|
|
@ -1103,13 +1103,13 @@ class ManageCheck(AdminScriptTestCase):
|
||||||
'django.contrib.auth',
|
'django.contrib.auth',
|
||||||
'django.contrib.contenttypes',
|
'django.contrib.contenttypes',
|
||||||
'django.contrib.messages',
|
'django.contrib.messages',
|
||||||
'django.contrib.sessions',
|
|
||||||
],
|
],
|
||||||
sdict={
|
sdict={
|
||||||
'DEBUG': True,
|
'DEBUG': True,
|
||||||
'MIDDLEWARE': [
|
'MIDDLEWARE': [
|
||||||
'django.contrib.messages.middleware.MessageMiddleware',
|
'django.contrib.messages.middleware.MessageMiddleware',
|
||||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||||
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
],
|
],
|
||||||
'TEMPLATES': [
|
'TEMPLATES': [
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue