aboutsummaryrefslogtreecommitdiffstats
path: root/debug_toolbar
diff options
context:
space:
mode:
Diffstat (limited to 'debug_toolbar')
-rw-r--r--debug_toolbar/middleware.py17
-rw-r--r--debug_toolbar/panels/cache.py5
-rw-r--r--debug_toolbar/panels/signals.py8
-rw-r--r--debug_toolbar/panels/template.py3
-rw-r--r--debug_toolbar/toolbar/loader.py11
-rw-r--r--debug_toolbar/utils/__init__.py15
-rw-r--r--debug_toolbar/utils/settings.py27
-rw-r--r--debug_toolbar/utils/tracking/db.py13
8 files changed, 48 insertions, 51 deletions
diff --git a/debug_toolbar/middleware.py b/debug_toolbar/middleware.py
index 2c47227..76402bd 100644
--- a/debug_toolbar/middleware.py
+++ b/debug_toolbar/middleware.py
@@ -16,6 +16,7 @@ from django.utils import six
import debug_toolbar.urls
from debug_toolbar.toolbar.loader import DebugToolbar
+from debug_toolbar.utils.settings import CONFIG
_HTML_TYPES = ('text/html', 'application/xhtml+xml')
# Handles python threading module bug - http://bugs.python.org/issue14308
@@ -60,21 +61,11 @@ class DebugToolbarMiddleware(object):
def __init__(self):
self._urlconfs = {}
- # Set method to use to decide to show toolbar
- self.show_toolbar = show_toolbar
+ # The method to call to decide to show the toolbar
+ self.show_toolbar = CONFIG['SHOW_TOOLBAR_CALLBACK'] or show_toolbar
# The tag to attach the toolbar to
- self.tag = '</body>'
-
- if hasattr(settings, 'DEBUG_TOOLBAR_CONFIG'):
- show_toolbar_callback = settings.DEBUG_TOOLBAR_CONFIG.get(
- 'SHOW_TOOLBAR_CALLBACK', None)
- if show_toolbar_callback:
- self.show_toolbar = show_toolbar_callback
-
- tag = settings.DEBUG_TOOLBAR_CONFIG.get('TAG', None)
- if tag:
- self.tag = '</' + tag + '>'
+ self.tag = '</%s>' % CONFIG['TAG']
def process_request(self, request):
__traceback_hide__ = True # noqa
diff --git a/debug_toolbar/panels/cache.py b/debug_toolbar/panels/cache.py
index b3cb540..8127d55 100644
--- a/debug_toolbar/panels/cache.py
+++ b/debug_toolbar/panels/cache.py
@@ -16,6 +16,7 @@ from django.utils.translation import ugettext_lazy as _, ungettext
from debug_toolbar.panels import DebugPanel
from debug_toolbar.utils import (tidy_stacktrace, render_stacktrace,
get_template_info, get_stack)
+from debug_toolbar.utils.settings import CONFIG
cache_called = Signal(providing_args=[
@@ -28,9 +29,7 @@ def send_signal(method):
value = method(self, *args, **kwargs)
t = time.time() - t
- debug_toolbar_config = getattr(settings, 'DEBUG_TOOLBAR_CONFIG', {})
- enable_stacktraces = debug_toolbar_config.get('ENABLE_STACKTRACES', True)
- if enable_stacktraces:
+ if CONFIG['ENABLE_STACKTRACES']:
stacktrace = tidy_stacktrace(reversed(get_stack()))
else:
stacktrace = []
diff --git a/debug_toolbar/panels/signals.py b/debug_toolbar/panels/signals.py
index f7d4239..ae6b773 100644
--- a/debug_toolbar/panels/signals.py
+++ b/debug_toolbar/panels/signals.py
@@ -1,6 +1,5 @@
from __future__ import unicode_literals
-from django.conf import settings
from django.core.signals import (
request_started, request_finished, got_request_exception)
from django.db.models.signals import (
@@ -17,6 +16,7 @@ except ImportError:
connection_created = None
from debug_toolbar.panels import DebugPanel
+from debug_toolbar.utils.settings import CONFIG
class SignalDebugPanel(DebugPanel):
@@ -66,11 +66,7 @@ class SignalDebugPanel(DebugPanel):
@property
def signals(self):
signals = self.SIGNALS.copy()
- if hasattr(settings, 'DEBUG_TOOLBAR_CONFIG'):
- extra_signals = settings.DEBUG_TOOLBAR_CONFIG.get('EXTRA_SIGNALS', [])
- else:
- extra_signals = []
- for signal in extra_signals:
+ for signal in CONFIG['EXTRA_SIGNALS']:
mod_path, signal_name = signal.rsplit('.', 1)
signals_mod = import_module(mod_path)
signals[signal_name] = getattr(signals_mod, signal_name)
diff --git a/debug_toolbar/panels/template.py b/debug_toolbar/panels/template.py
index d8f96f2..f8cd46b 100644
--- a/debug_toolbar/panels/template.py
+++ b/debug_toolbar/panels/template.py
@@ -12,6 +12,7 @@ from django.utils.translation import ugettext_lazy as _
from django.db.models.query import QuerySet, RawQuerySet
from debug_toolbar.panels import DebugPanel
from debug_toolbar.utils.tracking.db import recording, SQLQueryTriggered
+from debug_toolbar.utils.settings import CONFIG
# Code taken and adapted from Simon Willison and Django Snippets:
# http://www.djangosnippets.org/snippets/766/
@@ -133,7 +134,7 @@ class TemplateDebugPanel(DebugPanel):
template.origin_name = 'No origin'
info['template'] = template
# Clean up context for better readability
- if getattr(settings, 'DEBUG_TOOLBAR_CONFIG', {}).get('SHOW_TEMPLATE_CONTEXT', True):
+ if CONFIG['SHOW_TEMPLATE_CONTEXT']:
context_list = template_data.get('context', [])
info['context'] = '\n'.join(context_list)
template_context.append(info)
diff --git a/debug_toolbar/toolbar/loader.py b/debug_toolbar/toolbar/loader.py
index 491f66c..c8630a9 100644
--- a/debug_toolbar/toolbar/loader.py
+++ b/debug_toolbar/toolbar/loader.py
@@ -9,6 +9,8 @@ from django.template.loader import render_to_string
from django.utils.datastructures import SortedDict
from django.utils.importlib import import_module
+from debug_toolbar.utils.settings import CONFIG
+
class DebugToolbar(object):
@@ -17,17 +19,14 @@ class DebugToolbar(object):
self._panels = SortedDict()
base_url = self.request.META.get('SCRIPT_NAME', '')
self.config = {
- 'INTERCEPT_REDIRECTS': False,
'MEDIA_URL': '%s/__debug__/m/' % base_url,
- 'ROOT_TAG_ATTRS': '',
}
- # Check if settings has a DEBUG_TOOLBAR_CONFIG and updated config
- self.config.update(getattr(settings, 'DEBUG_TOOLBAR_CONFIG', {}))
+ self.config.update(CONFIG)
self.template_context = {
'BASE_URL': base_url, # for backwards compatibility
- 'DEBUG_TOOLBAR_MEDIA_URL': self.config.get('MEDIA_URL'),
+ 'DEBUG_TOOLBAR_MEDIA_URL': self.config['MEDIA_URL'],
'STATIC_URL': settings.STATIC_URL,
- 'TOOLBAR_ROOT_TAG_ATTRS': self.config.get('ROOT_TAG_ATTRS'),
+ 'TOOLBAR_ROOT_TAG_ATTRS': self.config['ROOT_TAG_ATTRS'],
}
self.load_panels()
diff --git a/debug_toolbar/utils/__init__.py b/debug_toolbar/utils/__init__.py
index 73e38e2..c421dce 100644
--- a/debug_toolbar/utils/__init__.py
+++ b/debug_toolbar/utils/__init__.py
@@ -14,13 +14,11 @@ from django.utils.safestring import mark_safe
from django.utils import six
from django.views.debug import linebreak_iter
+from .settings import CONFIG
# Figure out some paths
django_path = os.path.realpath(os.path.dirname(django.__file__))
-config = getattr(settings, 'DEBUG_TOOLBAR_CONFIG', {})
-hide_django_sql = config.get('HIDE_DJANGO_SQL', True)
-
def get_module_path(module_name):
try:
@@ -37,14 +35,7 @@ def get_module_path(module_name):
hidden_paths = [
get_module_path(module_name)
- for module_name in config.get(
- 'HIDDEN_STACKTRACE_MODULES', (
- 'socketserver' if six.PY3 else 'SocketServer',
- 'threading',
- 'wsgiref',
- 'debug_toolbar',
- )
- )
+ for module_name in CONFIG['HIDDEN_STACKTRACE_MODULES']
]
@@ -68,7 +59,7 @@ def tidy_stacktrace(stack):
# inspection.
if '__traceback_hide__' in frame.f_locals:
continue
- if hide_django_sql and django_path in s_path and not 'django/contrib' in s_path:
+ if CONFIG['HIDE_DJANGO_SQL'] and django_path in s_path and not 'django/contrib' in s_path:
continue
if omit_path(s_path):
continue
diff --git a/debug_toolbar/utils/settings.py b/debug_toolbar/utils/settings.py
new file mode 100644
index 0000000..482781b
--- /dev/null
+++ b/debug_toolbar/utils/settings.py
@@ -0,0 +1,27 @@
+from __future__ import unicode_literals
+
+from django.conf import settings
+from django.utils import six
+
+
+CONFIG_DEFAULTS = {
+ 'INTERCEPT_REDIRECTS': False,
+ 'SHOW_TOOLBAR_CALLBACK': None,
+ 'EXTRA_SIGNALS': [],
+ 'HIDE_DJANGO_SQL': True,
+ 'SHOW_TEMPLATE_CONTEXT': True,
+ 'TAG': 'body',
+ 'ENABLE_STACKTRACES': True,
+ 'HIDDEN_STACKTRACE_MODULES': (
+ 'socketserver' if six.PY3 else 'SocketServer',
+ 'threading',
+ 'wsgiref',
+ 'debug_toolbar',
+ ),
+ 'ROOT_TAG_ATTRS': '',
+}
+
+
+CONFIG = {}
+CONFIG.update(CONFIG_DEFAULTS)
+CONFIG.update(getattr(settings, 'DEBUG_TOOLBAR_CONFIG', {}))
diff --git a/debug_toolbar/utils/tracking/db.py b/debug_toolbar/utils/tracking/db.py
index 5822270..b195f4a 100644
--- a/debug_toolbar/utils/tracking/db.py
+++ b/debug_toolbar/utils/tracking/db.py
@@ -12,12 +12,7 @@ from django.utils.encoding import force_text
from django.utils import six
from debug_toolbar.utils import tidy_stacktrace, get_template_info, get_stack
-
-
-# TODO:This should be set in the toolbar loader as a default and panels should
-# get a copy of the toolbar object with access to its config dictionary
-DEBUG_TOOLBAR_CONFIG = getattr(settings, 'DEBUG_TOOLBAR_CONFIG', {})
-SQL_WARNING_THRESHOLD = DEBUG_TOOLBAR_CONFIG.get('SQL_WARNING_THRESHOLD', 500)
+from debug_toolbar.utils.settings import CONFIG
class SQLQueryTriggered(Exception):
@@ -98,9 +93,7 @@ class NormalCursorWrapper(object):
finally:
stop_time = time()
duration = (stop_time - start_time) * 1000
- debug_toolbar_config = getattr(settings, 'DEBUG_TOOLBAR_CONFIG', {})
- enable_stacktraces = debug_toolbar_config.get('ENABLE_STACKTRACES', True)
- if enable_stacktraces:
+ if CONFIG['ENABLE_STACKTRACES']:
stacktrace = tidy_stacktrace(reversed(get_stack()))
else:
stacktrace = []
@@ -143,7 +136,7 @@ class NormalCursorWrapper(object):
'stacktrace': stacktrace,
'start_time': start_time,
'stop_time': stop_time,
- 'is_slow': (duration > SQL_WARNING_THRESHOLD),
+ 'is_slow': (duration > CONFIG.get('SQL_WARNING_THRESHOLD', 500)),
'is_select': sql.lower().strip().startswith('select'),
'template_info': template_info,
}