Skip to content

Commit 2f61273

Browse files
committed
refactor: add TRACK_DDT_MODELS to override tracking DDT models
1 parent 115f3a0 commit 2f61273

File tree

2 files changed

+13
-16
lines changed

2 files changed

+13
-16
lines changed

debug_toolbar/panels/sql/tracking.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from django.apps import apps
99
from django.utils.encoding import force_str
1010

11+
from debug_toolbar import settings as dt_settings
1112
from debug_toolbar.utils import get_stack_trace, get_template_info
1213

1314
try:
@@ -40,6 +41,11 @@
4041
}
4142

4243

44+
DDT_MODELS = {
45+
m._meta.db_table for m in apps.get_app_config("debug_toolbar").get_models()
46+
}
47+
48+
4349
class SQLQueryTriggered(Exception):
4450
"""Thrown when template panel triggers a query"""
4551

@@ -236,8 +242,9 @@ def _record(self, method, sql, params):
236242
}
237243
)
238244

239-
# Skip recording if query includes DDT models.
240-
if allow_ddt_models_tracking.get() or not any(
245+
# Skip tracking for DDT models by default.
246+
# This can be overridden by setting TRACK_DDT_MODELS = True
247+
if dt_settings.get_config()["TRACK_DDT_MODELS"] or not any(
241248
table in sql for table in DDT_MODELS
242249
):
243250
# We keep `sql` to maintain backwards compatibility

tests/panels/test_sql.py

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -119,12 +119,10 @@ async def test_recording_concurrent_async(self):
119119
# ensure the stacktrace is populated
120120
self.assertTrue(len(query["stacktrace"]) > 0)
121121

122+
@override_settings(DEBUG_TOOLBAR_CONFIG={"TRACK_DDT_MODELS": True})
122123
def test_ddt_models_tracking(self):
123124
self.assertEqual(len(self.panel._queries), 0)
124125

125-
# enable ddt tracking
126-
sql_tracking.allow_ddt_models_tracking.set(True)
127-
128126
sql_call_ddt()
129127

130128
# ensure query was logged
@@ -136,14 +134,12 @@ def test_ddt_models_tracking(self):
136134
self.assertTrue("stacktrace" in query)
137135

138136
# ensure the stacktrace is populated
139-
self.assertTrue(len(self.panel._queries), 0)
137+
self.assertTrue(len(query["stacktrace"]) > 0)
140138

139+
@override_settings(DEBUG_TOOLBAR_CONFIG={"TRACK_DDT_MODELS": True})
141140
async def test_ddt_models_tracking_async(self):
142141
self.assertEqual(len(self.panel._queries), 0)
143142

144-
# enable ddt tracking
145-
sql_tracking.allow_ddt_models_tracking.set(True)
146-
147143
await async_sql_call_ddt()
148144

149145
# ensure query was logged
@@ -155,24 +151,18 @@ async def test_ddt_models_tracking_async(self):
155151
self.assertTrue("stacktrace" in query)
156152

157153
# ensure the stacktrace is populated
158-
self.assertTrue(len(self.panel._queries), 0)
154+
self.assertTrue(len(query["stacktrace"]) > 0)
159155

160156
def test_ddt_models_untracking(self):
161157
self.assertEqual(len(self.panel._queries), 0)
162158

163-
# disable ddt tracking
164-
sql_tracking.allow_ddt_models_tracking.set(False)
165-
166159
sql_call_ddt()
167160

168161
self.assertEqual(len(self.panel._queries), 0)
169162

170163
async def test_ddt_models_untracking_async(self):
171164
self.assertEqual(len(self.panel._queries), 0)
172165

173-
# enable ddt tracking
174-
sql_tracking.allow_ddt_models_tracking.set(False)
175-
176166
await async_sql_call_ddt()
177167

178168
self.assertEqual(len(self.panel._queries), 0)

0 commit comments

Comments
 (0)