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.auth', 405),
|
||||
('django.contrib.messages', 406),
|
||||
('django.contrib.sessions', 407),
|
||||
)
|
||||
for app_name, error_code in app_dependencies:
|
||||
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.",
|
||||
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
|
||||
|
||||
|
||||
|
|
|
@ -666,13 +666,13 @@ The following checks are performed on the default
|
|||
:setting:`INSTALLED_APPS` in order to use the admin application.
|
||||
* **admin.E406**: :mod:`django.contrib.messages` must be in
|
||||
: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**:
|
||||
:class:`django.contrib.auth.middleware.AuthenticationMiddleware` must be in
|
||||
:setting:`MIDDLEWARE` in order to use the admin application.
|
||||
* **admin.E409**: :class:`django.contrib.messages.middleware.MessageMiddleware`
|
||||
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``
|
||||
--------
|
||||
|
|
|
@ -49,3 +49,9 @@ Bugfixes
|
|||
|
||||
* 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`).
|
||||
|
||||
* 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.contenttypes.admin import GenericStackedInline
|
||||
from django.contrib.messages.middleware import MessageMiddleware
|
||||
from django.contrib.sessions.middleware import SessionMiddleware
|
||||
from django.core import checks
|
||||
from django.test import SimpleTestCase, override_settings
|
||||
|
||||
|
@ -52,13 +53,16 @@ class ModelBackendSubclass(ModelBackend):
|
|||
pass
|
||||
|
||||
|
||||
class SessionMiddlewareSubclass(SessionMiddleware):
|
||||
pass
|
||||
|
||||
|
||||
@override_settings(
|
||||
SILENCED_SYSTEM_CHECKS=['fields.W342'], # ForeignKey(unique=True)
|
||||
INSTALLED_APPS=[
|
||||
'django.contrib.admin',
|
||||
'django.contrib.auth',
|
||||
'django.contrib.contenttypes',
|
||||
'django.contrib.sessions',
|
||||
'django.contrib.messages',
|
||||
'admin_checks',
|
||||
],
|
||||
|
@ -93,11 +97,6 @@ class SystemChecksTestCase(SimpleTestCase):
|
|||
"to use the admin application.",
|
||||
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)
|
||||
|
||||
|
@ -201,13 +200,19 @@ class SystemChecksTestCase(SimpleTestCase):
|
|||
"'django.contrib.messages.middleware.MessageMiddleware' "
|
||||
"must be in MIDDLEWARE in order to use the admin application.",
|
||||
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)
|
||||
|
||||
@override_settings(MIDDLEWARE=[
|
||||
'admin_checks.tests.AuthenticationMiddlewareSubclass',
|
||||
'admin_checks.tests.MessageMiddlewareSubclass',
|
||||
'admin_checks.tests.SessionMiddlewareSubclass',
|
||||
])
|
||||
def test_middleware_subclasses(self):
|
||||
self.assertEqual(admin.checks.check_dependencies(), [])
|
||||
|
@ -216,6 +221,7 @@ class SystemChecksTestCase(SimpleTestCase):
|
|||
'django.contrib.does.not.Exist',
|
||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
])
|
||||
def test_admin_check_ignores_import_error_in_middleware(self):
|
||||
self.assertEqual(admin.checks.check_dependencies(), [])
|
||||
|
|
|
@ -1103,13 +1103,13 @@ class ManageCheck(AdminScriptTestCase):
|
|||
'django.contrib.auth',
|
||||
'django.contrib.contenttypes',
|
||||
'django.contrib.messages',
|
||||
'django.contrib.sessions',
|
||||
],
|
||||
sdict={
|
||||
'DEBUG': True,
|
||||
'MIDDLEWARE': [
|
||||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
],
|
||||
'TEMPLATES': [
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue