diff options
| -rw-r--r-- | README.rst | 7 | ||||
| -rw-r--r-- | debug_toolbar/panels/request_vars.py | 18 | ||||
| -rw-r--r-- | debug_toolbar/panels/sql.py | 2 | ||||
| -rw-r--r-- | debug_toolbar/panels/template.py | 2 | ||||
| -rw-r--r-- | debug_toolbar/templates/debug_toolbar/panels/sql.html | 3 | ||||
| -rw-r--r-- | debug_toolbar/templatetags/__init__.py | 0 | ||||
| -rw-r--r-- | debug_toolbar/templatetags/debug_toolbar_utils.py | 11 | ||||
| -rw-r--r-- | tests/tests.py | 25 | 
8 files changed, 60 insertions, 8 deletions
| @@ -192,6 +192,13 @@ adding proper coverage (especially if it has a chance for a regression) in the t      python setup.py test + +3rd Party Panels +================ + +A list of 3rd party panels can be found on the Django Debug Toolbar Github wiki: +https://github.com/django-debug-toolbar/django-debug-toolbar/wiki/3rd-Party-Panels +  TODOs and BUGS  ==============  See: https://github.com/django-debug-toolbar/django-debug-toolbar/issues diff --git a/debug_toolbar/panels/request_vars.py b/debug_toolbar/panels/request_vars.py index 632068e..60214ae 100644 --- a/debug_toolbar/panels/request_vars.py +++ b/debug_toolbar/panels/request_vars.py @@ -9,6 +9,12 @@ class RequestVarsDebugPanel(DebugPanel):      name = 'RequestVars'      has_content = True +    def __init__(self, *args, **kwargs): +        DebugPanel.__init__(self, *args, **kwargs) +        self.view_func = None +        self.view_args = None +        self.view_kwargs = None +      def nav_title(self):          return _('Request Vars') @@ -29,18 +35,18 @@ class RequestVarsDebugPanel(DebugPanel):      def content(self):          context = self.context.copy() -        if hasattr(self.view_func, '__name__'): -            view_name = self.view_func.__name__ -        elif hasattr(self.view_func, '__class__'): -            view_name = self.view_func.__class__.__name__ +        if self.view_func is not None: +            module = self.view_func.__module__ +            name = getattr(self.view_func, '__name__', None) or getattr(self.view_func.__class__,'__name__','<unknown>') +            view_func = '%s.%s' % (module, name)          else: -            view_name = '<unknown>' +            view_func = '<no view>'          context.update({              'get': [(k, self.request.GET.getlist(k)) for k in self.request.GET],              'post': [(k, self.request.POST.getlist(k)) for k in self.request.POST],              'cookies': [(k, self.request.COOKIES.get(k)) for k in self.request.COOKIES], -            'view_func': '%s.%s' % (self.view_func.__module__, view_name), +            'view_func': view_func,              'view_args': self.view_args,              'view_kwargs': self.view_kwargs          }) diff --git a/debug_toolbar/panels/sql.py b/debug_toolbar/panels/sql.py index c6b5996..bce769a 100644 --- a/debug_toolbar/panels/sql.py +++ b/debug_toolbar/panels/sql.py @@ -183,8 +183,10 @@ class SQLDebugPanel(DebugPanel):                  query['rgb_color'] = self._databases[alias]['rgb_color']                  try:                      query['width_ratio'] = (query['duration'] / self._sql_time) * 100 +                    query['width_ratio_relative'] =  100.0 * query['width_ratio'] / (100.0 - width_ratio_tally)                  except ZeroDivisionError:                      query['width_ratio'] = 0 +                    query['width_ratio_relative'] = 0                  query['start_offset'] = width_ratio_tally                  query['end_offset'] = query['width_ratio'] + query['start_offset']                  width_ratio_tally += query['width_ratio'] diff --git a/debug_toolbar/panels/template.py b/debug_toolbar/panels/template.py index 44b8b3e..3c70690 100644 --- a/debug_toolbar/panels/template.py +++ b/debug_toolbar/panels/template.py @@ -78,6 +78,8 @@ class TemplateDebugPanel(DebugPanel):              # Skip templates that we are generating through the debug toolbar.              if template.name and template.name.startswith('debug_toolbar/'):                  continue +            if not hasattr(template, 'origin'): +                continue              if template.origin and template.origin.name:                  template.origin_name = template.origin.name              else: diff --git a/debug_toolbar/templates/debug_toolbar/panels/sql.html b/debug_toolbar/templates/debug_toolbar/panels/sql.html index f6f231c..9b282ca 100644 --- a/debug_toolbar/templates/debug_toolbar/panels/sql.html +++ b/debug_toolbar/templates/debug_toolbar/panels/sql.html @@ -1,4 +1,5 @@  {% load i18n %} +{% load debug_toolbar_utils %}  <div class="clearfix">  	<ul class="stats">  		{% for alias, info in databases %} @@ -34,7 +35,7 @@  						</div>  					</td>  					<td class="timeline"> -						<div class="djDebugTimeline"><div class="djDebugLineChart{% if query.is_slow %} djDebugLineChartWarning{% endif %}" style="left:{{ query.start_offset }}%;"><strong style="width:{{ query.width_ratio }}%;">{{ query.width_ratio }}%</strong></div></div> +						<div class="djDebugTimeline"><div class="djDebugLineChart{% if query.is_slow %} djDebugLineChartWarning{% endif %}" style="left:{{ query.start_offset|dotted_number }}%;"><strong style="width:{{ query.width_ratio_relative|dotted_number }}%;">{{ query.width_ratio }}%</strong></div></div>  					</td>  					<td class="time">  						{{ query.duration|floatformat:"2" }} diff --git a/debug_toolbar/templatetags/__init__.py b/debug_toolbar/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/debug_toolbar/templatetags/__init__.py diff --git a/debug_toolbar/templatetags/debug_toolbar_utils.py b/debug_toolbar/templatetags/debug_toolbar_utils.py new file mode 100644 index 0000000..6b204eb --- /dev/null +++ b/debug_toolbar/templatetags/debug_toolbar_utils.py @@ -0,0 +1,11 @@ + +from django import template +from django.utils.numberformat import format + +register = template.Library() + +@register.filter +def dotted_number(number): +    number = float(number) +    return format(number, '.', 6) +     diff --git a/tests/tests.py b/tests/tests.py index 31b96c8..84b4418 100644 --- a/tests/tests.py +++ b/tests/tests.py @@ -1,5 +1,6 @@  from debug_toolbar.middleware import DebugToolbarMiddleware  from debug_toolbar.panels.sql import SQLDebugPanel +from debug_toolbar.panels.request_vars import RequestVarsDebugPanel  from debug_toolbar.toolbar.loader import DebugToolbar  from debug_toolbar.utils.tracking import pre_dispatch, post_dispatch, callbacks @@ -133,6 +134,28 @@ class DebugToolbarTestCase(BaseTestCase):              self.assertEquals(request.urlconf.urlpatterns[0]._callback_str, 'debug_toolbar.views.debug_media')              self.assertEquals(request.urlconf.urlpatterns[-1].urlconf_name.__name__, 'tests.urls') +    def test_with_process_view(self): +        request = self.request +         +        def _test_view(request): +            return HttpResponse('') +         +        with Settings(DEBUG=True): +            panel = self.toolbar.get_panel(RequestVarsDebugPanel) +            panel.process_request(request) +            panel.process_view(request, _test_view, [], {}) +            content = panel.content() +            self.assertIn('debug_toolbar.tests.tests._test_view', content) + +    def test_without_process_view(self): +        request = self.request + +        with Settings(DEBUG=True): +            panel = self.toolbar.get_panel(RequestVarsDebugPanel) +            panel.process_request(request) +            content = panel.content() +            self.assertIn('<no view>', content) +  class SQLPanelTestCase(BaseTestCase):      def test_recording(self):          panel = self.toolbar.get_panel(SQLDebugPanel) @@ -281,4 +304,4 @@ class TrackingTestCase(BaseTestCase):          self.assertTrue('kwargs' in foo, foo)          self.assertTrue(len(foo['kwargs']), 1)          self.assertTrue('foo' in foo['kwargs']) -        self.assertEquals(foo['kwargs']['foo'], 'bar')
\ No newline at end of file +        self.assertEquals(foo['kwargs']['foo'], 'bar') | 
