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/toolbar.py | |
| 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/toolbar.py')
| -rw-r--r-- | debug_toolbar/toolbar.py | 17 | 
1 files changed, 17 insertions, 0 deletions
| 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 | 
