diff options
| author | David Cramer | 2011-06-14 12:49:51 -0700 |
|---|---|---|
| committer | David Cramer | 2011-06-14 12:49:51 -0700 |
| commit | 7504141f19ef1bdaaf91d95461dad35ac84b5211 (patch) | |
| tree | e3a110296b02b1f665b0563f9ecfa244ebc8e0b4 | |
| parent | 4ee67a1632f41a873d997ae15ac0a2eccca04430 (diff) | |
| parent | 2480ca97297a101b91e6287e9bd5acd4547e6bbd (diff) | |
| download | django-debug-toolbar-7504141f19ef1bdaaf91d95461dad35ac84b5211.tar.bz2 | |
Merge branch 'master' of github.com:django-debug-toolbar/django-debug-toolbar
| -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') |
