Skip to content

Commit eb9a830

Browse files
author
Ignacio Avas
committed
Handle List and Tuple middleware settings.
1 parent 7b60d7d commit eb9a830

File tree

1 file changed

+21
-8
lines changed

1 file changed

+21
-8
lines changed

test_query_counter/apps.py

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
from django.apps import AppConfig
99
from django.conf import settings
10+
from django.core.checks import Error
1011
from django.test import TransactionTestCase
1112
from django.test.utils import get_runner
1213
from django.utils.module_loading import import_string
@@ -64,6 +65,7 @@ def is_middleware_class(cls, middleware_path):
6465

6566
@classmethod
6667
def add_middleware(cls):
68+
middleware_class_name = 'test_query_counter.middleware.Middleware'
6769
middleware_setting = getattr(settings, 'MIDDLEWARE', None)
6870
setting_name = 'MIDDLEWARE'
6971
if middleware_setting is None:
@@ -72,15 +74,26 @@ def add_middleware(cls):
7274

7375
# add the middleware only if it was not added before
7476
if not any(map(cls.is_middleware_class, middleware_setting)):
75-
setattr(
76-
settings,
77-
setting_name,
78-
(
79-
middleware_setting + (
80-
'test_query_counter.middleware.Middleware',
81-
)
77+
if isinstance(middleware_setting, list):
78+
new_middleware_setting = (
79+
middleware_setting +
80+
[middleware_class_name]
8281
)
83-
)
82+
elif isinstance(middleware_setting, tuple):
83+
new_middleware_setting = (
84+
middleware_setting +
85+
(middleware_class_name,)
86+
)
87+
else:
88+
err_msg = "{} is missing from {}.".format(
89+
middleware_class_name,
90+
setting_name
91+
)
92+
hint = "Add {} to {}.".format(middleware_class_name,
93+
setting_name)
94+
raise Error(err_msg, hint=hint)
95+
96+
setattr(settings, setting_name, new_middleware_setting)
8497

8598
@classmethod
8699
def wrap_set_up(cls, set_up):

0 commit comments

Comments
 (0)