-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Expand file tree
/
Copy pathsettings.py
More file actions
121 lines (106 loc) · 3.64 KB
/
settings.py
File metadata and controls
121 lines (106 loc) · 3.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import os
import sys
import warnings
from functools import cache
from django.conf import settings
from django.dispatch import receiver
from django.test.signals import setting_changed
def _is_running_tests():
"""
Helper function to support testing default value for
IS_RUNNING_TESTS
"""
return "test" in sys.argv or "PYTEST_VERSION" in os.environ
CONFIG_DEFAULTS = {
# Toolbar options
"DISABLE_PANELS": {
"debug_toolbar.panels.profiling.ProfilingPanel",
"debug_toolbar.panels.redirects.RedirectsPanel",
},
"INSERT_BEFORE": "</body>",
"IS_RUNNING_TESTS": _is_running_tests(),
"OBSERVE_REQUEST_CALLBACK": "debug_toolbar.toolbar.observe_request",
"RENDER_PANELS": None,
"RESULTS_CACHE_SIZE": 25,
"ROOT_TAG_EXTRA_ATTRS": "",
"SHOW_COLLAPSED": False,
"SHOW_TOOLBAR_CALLBACK": "debug_toolbar.middleware.show_toolbar",
"TOOLBAR_LANGUAGE": None,
"TOOLBAR_STORE_CLASS": "debug_toolbar.store.MemoryStore",
"UPDATE_ON_FETCH": False,
# Panel options
"EXTRA_SIGNALS": [],
"ENABLE_STACKTRACES": True,
"ENABLE_STACKTRACES_LOCALS": False,
"HIDE_IN_STACKTRACES": (
"socketserver",
"threading",
"wsgiref",
"debug_toolbar",
"django.db",
"django.core.handlers",
"django.core.servers",
"django.utils.decorators",
"django.utils.deprecation",
"django.utils.functional",
),
"PRETTIFY_SQL": True,
"PROFILER_CAPTURE_PROJECT_CODE": True,
"PROFILER_MAX_DEPTH": 10,
"PROFILER_PROFILE_ROOT": None,
"PROFILER_THRESHOLD_RATIO": 8,
"SHOW_TEMPLATE_CONTEXT": True,
"SKIP_TEMPLATE_PREFIXES": ("django/forms/widgets/", "admin/widgets/"),
"SKIP_TOOLBAR_QUERIES": True,
"SQL_WARNING_THRESHOLD": 500, # milliseconds
}
@cache
def get_config():
USER_CONFIG = getattr(settings, "DEBUG_TOOLBAR_CONFIG", {})
CONFIG = CONFIG_DEFAULTS.copy()
CONFIG.update(USER_CONFIG)
return CONFIG
PANELS_DEFAULTS = [
"debug_toolbar.panels.history.HistoryPanel",
"debug_toolbar.panels.versions.VersionsPanel",
"debug_toolbar.panels.timer.TimerPanel",
"debug_toolbar.panels.settings.SettingsPanel",
"debug_toolbar.panels.headers.HeadersPanel",
"debug_toolbar.panels.request.RequestPanel",
"debug_toolbar.panels.sql.SQLPanel",
"debug_toolbar.panels.staticfiles.StaticFilesPanel",
"debug_toolbar.panels.templates.TemplatesPanel",
"debug_toolbar.panels.alerts.AlertsPanel",
"debug_toolbar.panels.cache.CachePanel",
"debug_toolbar.panels.signals.SignalsPanel",
"debug_toolbar.panels.community.CommunityPanel",
"debug_toolbar.panels.redirects.RedirectsPanel",
"debug_toolbar.panels.profiling.ProfilingPanel",
]
@cache
def get_panels():
try:
PANELS = list(settings.DEBUG_TOOLBAR_PANELS)
except AttributeError:
PANELS = PANELS_DEFAULTS
logging_panel = "debug_toolbar.panels.logging.LoggingPanel"
if logging_panel in PANELS:
PANELS = [panel for panel in PANELS if panel != logging_panel]
warnings.warn(
f"Please remove {logging_panel} from your DEBUG_TOOLBAR_PANELS setting.",
DeprecationWarning,
stacklevel=1,
)
return PANELS
@receiver(setting_changed)
def update_toolbar_config(*, setting, **kwargs):
"""
Refresh configuration when overriding settings.
"""
if setting == "DEBUG_TOOLBAR_CONFIG":
get_config.cache_clear()
elif setting == "DEBUG_TOOLBAR_PANELS":
from debug_toolbar.toolbar import DebugToolbar
get_panels.cache_clear()
DebugToolbar._panel_classes = None
# Not implemented: invalidate debug_toolbar.urls.