Skip to content

Commit ebd2e64

Browse files
committed
Fix Django 1.0 middleware function compatibility
1 parent e7a9ed0 commit ebd2e64

File tree

3 files changed

+25
-1
lines changed

3 files changed

+25
-1
lines changed

debug_toolbar/apps.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from __future__ import absolute_import, unicode_literals
22

3+
import inspect
4+
35
from django.apps import AppConfig
46
from django.conf import settings
57
from django.core.checks import Error, register
@@ -63,4 +65,7 @@ def is_middleware_class(middleware_class, middleware_path):
6365
middleware_cls = import_string(middleware_path)
6466
except ImportError:
6567
return
66-
return issubclass(middleware_cls, middleware_class)
68+
return (
69+
inspect.isclass(middleware_cls) and
70+
issubclass(middleware_cls, middleware_class)
71+
)

tests/middleware.py

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
def simple_middleware(get_response):
2+
"""
3+
Used to test Django 1.10 compatibility.
4+
"""
5+
def middleware(request):
6+
return get_response(request)
7+
return middleware

tests/test_integration.py

+12
Original file line numberDiff line numberDiff line change
@@ -243,3 +243,15 @@ def test_check_gzip_middleware_error(self):
243243
),
244244
]
245245
)
246+
247+
@override_settings(
248+
MIDDLEWARE=[
249+
'debug_toolbar.middleware.DebugToolbarMiddleware',
250+
'tests.middleware.simple_middleware',
251+
],
252+
MIDDLEWARE_CLASSES=None
253+
)
254+
def test_middleware_factory_functions_supported(self):
255+
messages = run_checks()
256+
self.assertEqual(len(messages), 1)
257+
self.assertEqual(messages[0].id, '1_10.W001')

0 commit comments

Comments
 (0)