Skip to content

Commit 9370b21

Browse files
authored
Validate duplicate middleware load
1 parent 7bdecf1 commit 9370b21

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

debug_toolbar/apps.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def check_middleware(app_configs, **kwargs):
2121

2222
errors = []
2323
gzip_index = None
24-
debug_toolbar_index = None
24+
debug_toolbar_indexes = []
2525

2626
setting = getattr(settings, 'MIDDLEWARE', None)
2727
setting_name = 'MIDDLEWARE'
@@ -34,9 +34,9 @@ def check_middleware(app_configs, **kwargs):
3434
if is_middleware_class(GZipMiddleware, middleware):
3535
gzip_index = i
3636
elif is_middleware_class(DebugToolbarMiddleware, middleware):
37-
debug_toolbar_index = i
37+
debug_toolbar_indexes.append(i)
3838

39-
if debug_toolbar_index is None:
39+
if not debug_toolbar_indexes:
4040
# If the toolbar does not appear, report an error.
4141
errors.append(
4242
Error(
@@ -46,7 +46,16 @@ def check_middleware(app_configs, **kwargs):
4646
"%s." % setting_name,
4747
)
4848
)
49-
elif gzip_index is not None and debug_toolbar_index < gzip_index:
49+
elif len(debug_toolbar_indexes) != 1:
50+
errors.append(
51+
Error(
52+
"debug_toolbar.middleware.DebugToolbarMiddleware occurs "
53+
"multiple times in %s." % setting_name,
54+
hint="Load debug_toolbar.middleware.DebugToolbarMiddleware only "
55+
"once in %s." % setting_name,
56+
)
57+
)
58+
elif gzip_index is not None and debug_toolbar_indexes[0] < gzip_index:
5059
# If the toolbar appears before the gzip index, report an error.
5160
errors.append(
5261
Error(

0 commit comments

Comments
 (0)