Skip to content

Commit ef4bc2b

Browse files
authored
Merge pull request #879 from ryankask/functional-middleware-fix
Fix Django 1.10 function middleware compatibility
2 parents e7a9ed0 + 1f5531a commit ef4bc2b

File tree

3 files changed

+29
-1
lines changed

3 files changed

+29
-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

+16
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import unittest
77
from xml.etree import ElementTree as ET
88

9+
import django
910
from django.contrib.staticfiles.testing import StaticLiveServerTestCase
1011
from django.core.checks import Error, run_checks
1112
from django.test import RequestFactory, TestCase
@@ -243,3 +244,18 @@ def test_check_gzip_middleware_error(self):
243244
),
244245
]
245246
)
247+
248+
@override_settings(
249+
MIDDLEWARE=[
250+
'debug_toolbar.middleware.DebugToolbarMiddleware',
251+
'tests.middleware.simple_middleware',
252+
],
253+
MIDDLEWARE_CLASSES=None
254+
)
255+
def test_middleware_factory_functions_supported(self):
256+
messages = run_checks()
257+
258+
if django.VERSION[:2] < (1, 10):
259+
self.assertEqual(messages, [])
260+
else:
261+
self.assertEqual(messages[0].id, '1_10.W001')

0 commit comments

Comments
 (0)