123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- import warnings
- from functools import lru_cache
- from django.conf import settings
- from django.dispatch import receiver
- from django.test.signals import setting_changed
- CONFIG_DEFAULTS = {
- # Toolbar options
- "DISABLE_PANELS": {
- "debug_toolbar.panels.profiling.ProfilingPanel",
- "debug_toolbar.panels.redirects.RedirectsPanel",
- },
- "INSERT_BEFORE": "</body>",
- "RENDER_PANELS": None,
- "RESULTS_CACHE_SIZE": 25,
- "ROOT_TAG_EXTRA_ATTRS": "",
- "SHOW_COLLAPSED": False,
- "SHOW_TOOLBAR_CALLBACK": "debug_toolbar.middleware.show_toolbar",
- # 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_THRESHOLD_RATIO": 8,
- "SHOW_TEMPLATE_CONTEXT": True,
- "SKIP_TEMPLATE_PREFIXES": ("django/forms/widgets/", "admin/widgets/"),
- "SQL_WARNING_THRESHOLD": 500, # milliseconds
- "OBSERVE_REQUEST_CALLBACK": "debug_toolbar.toolbar.observe_request",
- "TOOLBAR_LANGUAGE": None,
- }
- @lru_cache(maxsize=None)
- 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.cache.CachePanel",
- "debug_toolbar.panels.signals.SignalsPanel",
- "debug_toolbar.panels.redirects.RedirectsPanel",
- "debug_toolbar.panels.profiling.ProfilingPanel",
- ]
- @lru_cache(maxsize=None)
- 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,
- )
- 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.
|