diff options
| author | Aymeric Augustin | 2013-11-12 22:40:20 +0100 |
|---|---|---|
| committer | Aymeric Augustin | 2013-11-12 22:40:20 +0100 |
| commit | 1062d9cf878b4bdc6f0e0f6434668cd7eb289998 (patch) | |
| tree | e3e400deec4a8c772fbc025e9144b0a380715b43 /debug_toolbar | |
| parent | f48039e3bad9e24a59a25ed5636b428e11784da9 (diff) | |
| download | django-debug-toolbar-1062d9cf878b4bdc6f0e0f6434668cd7eb289998.tar.bz2 | |
Make it possible for panels to provide URLs and views.
Fix #448.
Diffstat (limited to 'debug_toolbar')
| -rw-r--r-- | debug_toolbar/__init__.py | 8 | ||||
| -rw-r--r-- | debug_toolbar/models.py | 3 | ||||
| -rw-r--r-- | debug_toolbar/panels/__init__.py | 6 | ||||
| -rw-r--r-- | debug_toolbar/panels/sql.py | 9 | ||||
| -rw-r--r-- | debug_toolbar/panels/template.py | 7 | ||||
| -rw-r--r-- | debug_toolbar/toolbar.py | 17 | ||||
| -rw-r--r-- | debug_toolbar/urls.py | 18 |
7 files changed, 49 insertions, 19 deletions
diff --git a/debug_toolbar/__init__.py b/debug_toolbar/__init__.py index 3a8f300..61c4e7a 100644 --- a/debug_toolbar/__init__.py +++ b/debug_toolbar/__init__.py @@ -1,9 +1,17 @@ from __future__ import unicode_literals + __all__ = ('VERSION',) + try: VERSION = __import__('pkg_resources') \ .get_distribution('django-debug-toolbar').version except Exception as e: VERSION = 'unknown' + + +from .toolbar import DebugToolbar + + +urls = DebugToolbar.get_urls(), 'djdt', 'djdt' diff --git a/debug_toolbar/models.py b/debug_toolbar/models.py index a204b13..ef1d012 100644 --- a/debug_toolbar/models.py +++ b/debug_toolbar/models.py @@ -5,6 +5,7 @@ from django.conf.urls import include, patterns, url from django.core.urlresolvers import reverse, NoReverseMatch from django.utils.importlib import import_module +import debug_toolbar from debug_toolbar.middleware import DebugToolbarMiddleware @@ -50,7 +51,7 @@ def patch_root_urlconf(): except NoReverseMatch: urlconf_module = import_module(settings.ROOT_URLCONF) urlconf_module.urlpatterns += patterns('', # noqa - url(r'^__debug__/', include('debug_toolbar.urls', namespace='djdt', app_name='djdt')), + url(r'^__debug__/', include(debug_toolbar.urls)), ) diff --git a/debug_toolbar/panels/__init__.py b/debug_toolbar/panels/__init__.py index e60a5e6..47ca996 100644 --- a/debug_toolbar/panels/__init__.py +++ b/debug_toolbar/panels/__init__.py @@ -37,6 +37,12 @@ class DebugPanel(object): def dom_id(self): return 'djDebug%sPanel' % (self.name.replace(' ', '')) + # URLs for panel-specific views + + @classmethod + def get_urls(cls): + return [] + # Titles and subtitles def nav_title(self): diff --git a/debug_toolbar/panels/sql.py b/debug_toolbar/panels/sql.py index 1ccdc47..8042269 100644 --- a/debug_toolbar/panels/sql.py +++ b/debug_toolbar/panels/sql.py @@ -3,6 +3,7 @@ from __future__ import unicode_literals import uuid from copy import copy +from django.conf.urls import patterns, url from django.db import connections from django.utils.translation import ugettext_lazy as _, ungettext_lazy as __ @@ -103,6 +104,14 @@ class SQLDebugPanel(DebugPanel): self._sql_time += kwargs['duration'] self._num_queries += 1 + @classmethod + def get_urls(cls): + return patterns('debug_toolbar.views', # noqa + url(r'^sql_select/$', 'sql_select', name='sql_select'), + url(r'^sql_explain/$', 'sql_explain', name='sql_explain'), + url(r'^sql_profile/$', 'sql_profile', name='sql_profile'), + ) + def nav_title(self): return _('SQL') diff --git a/debug_toolbar/panels/template.py b/debug_toolbar/panels/template.py index d918cd7..562e87f 100644 --- a/debug_toolbar/panels/template.py +++ b/debug_toolbar/panels/template.py @@ -6,6 +6,7 @@ from pprint import pformat import django from django import http from django.conf import settings +from django.conf.urls import patterns, url from django.db.models.query import QuerySet, RawQuerySet from django.template.context import get_standard_processors from django.test.signals import template_rendered @@ -113,6 +114,12 @@ class TemplateDebugPanel(DebugPanel): kwargs['context'] = [force_text(item) for item in context_list] self.templates.append(kwargs) + @classmethod + def get_urls(cls): + return patterns('debug_toolbar.views', # noqa + url(r'^template_source/$', 'template_source', name='template_source'), + ) + def nav_title(self): return _('Templates') diff --git a/debug_toolbar/toolbar.py b/debug_toolbar/toolbar.py index 32dc1b7..bf632cd 100644 --- a/debug_toolbar/toolbar.py +++ b/debug_toolbar/toolbar.py @@ -5,6 +5,7 @@ The main DebugToolbar class that loads and renders the Toolbar. from __future__ import unicode_literals from django.conf import settings +from django.conf.urls import patterns, url from django.core.exceptions import ImproperlyConfigured from django.template.loader import render_to_string from django.utils.datastructures import SortedDict @@ -107,3 +108,19 @@ class DebugToolbar(object): panel_classes.append(panel_class) cls._panel_classes = panel_classes return cls._panel_classes + + _urlpatterns = None + + @classmethod + def get_urls(cls): + if cls._urlpatterns is None: + # Load URLs in a temporary variable for thread safety. + # Global URLs + urlpatterns = patterns('debug_toolbar.views', # noqa + url(r'^render_panel/$', 'render_panel', name='render_panel'), + ) + # Per-panel URLs + for panel_class in cls.get_panel_classes(): + urlpatterns += panel_class.get_urls() + cls._urlpatterns = urlpatterns + return cls._urlpatterns diff --git a/debug_toolbar/urls.py b/debug_toolbar/urls.py deleted file mode 100644 index 860187a..0000000 --- a/debug_toolbar/urls.py +++ /dev/null @@ -1,18 +0,0 @@ -""" -URLpatterns for the debug toolbar. - -The debug toolbar middleware will monkey-patch them into the default urlconf -if they aren't explicitly included. -""" - -from __future__ import unicode_literals - -from django.conf.urls import patterns, url - -urlpatterns = patterns('debug_toolbar.views', # noqa - url(r'^render_panel/$', 'render_panel', name='render_panel'), - url(r'^sql_select/$', 'sql_select', name='sql_select'), - url(r'^sql_explain/$', 'sql_explain', name='sql_explain'), - url(r'^sql_profile/$', 'sql_profile', name='sql_profile'), - url(r'^template_source/$', 'template_source', name='template_source'), -) |
