diff options
| -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 | ||||
| -rw-r--r-- | docs/installation.rst | 9 | ||||
| -rw-r--r-- | tests/__init__.py | 1 | ||||
| -rw-r--r-- | tests/urls.py | 4 | 
10 files changed, 57 insertions, 25 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'), -) diff --git a/docs/installation.rst b/docs/installation.rst index 514548a..3d71e12 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -57,15 +57,14 @@ Add the Debug Toolbar's URLs to your project's URLconf as follows::      from django.conf.urls import include, patterns, url      if settings.DEBUG: +        import debug_toolbar          urlpatterns += patterns('', -            url(r'^__debug__/', include('debug_toolbar.urls', namespace='djdt', app_name='djdt')), +            url(r'^__debug__/', include(debug_toolbar.urls)),          )  This example uses the ``__debug__`` prefix, but you can use any prefix that -doesn't clash with your application's URLs. - -It is mandatory to use the ``djdt`` namespace as shown above. This avoids -conflicts when reversing URLs by name. +doesn't clash with your application's URLs. Note the lack of quotes around +``debug_toolbar.urls``.  If the URLs aren't included in your root URLconf, the Debug Toolbar  automatically appends them. diff --git a/tests/__init__.py b/tests/__init__.py index b3b9440..3bf8994 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -20,3 +20,4 @@ def update_toolbar_panels(**kwargs):      if kwargs['setting'] == 'DEBUG_TOOLBAR_PANELS':          dt_settings.PANELS = kwargs['value'] or dt_settings.PANELS_DEFAULTS          DebugToolbar._panel_classes = None +        # Not implemented: invalidate debug_toolbar.urls diff --git a/tests/urls.py b/tests/urls.py index d4417a1..f297834 100644 --- a/tests/urls.py +++ b/tests/urls.py @@ -5,6 +5,8 @@ from __future__ import unicode_literals  from django.conf.urls import include, patterns, url  from django.contrib import admin +import debug_toolbar +  from .models import NonAsciiRepr @@ -18,5 +20,5 @@ urlpatterns = patterns('tests.views',                                   # noqa      url(r'^non_ascii_request/$', 'regular_view', {'title': NonAsciiRepr()}),      url(r'^new_user/$', 'new_user'),      url(r'^execute_sql/$', 'execute_sql'), -    url(r'^__debug__/', include('debug_toolbar.urls', namespace='djdt', app_name='djdt')), +    url(r'^__debug__/', include(debug_toolbar.urls)),  ) | 
