aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Cramer2011-06-14 12:49:51 -0700
committerDavid Cramer2011-06-14 12:49:51 -0700
commit7504141f19ef1bdaaf91d95461dad35ac84b5211 (patch)
treee3a110296b02b1f665b0563f9ecfa244ebc8e0b4
parent4ee67a1632f41a873d997ae15ac0a2eccca04430 (diff)
parent2480ca97297a101b91e6287e9bd5acd4547e6bbd (diff)
downloaddjango-debug-toolbar-7504141f19ef1bdaaf91d95461dad35ac84b5211.tar.bz2
Merge branch 'master' of github.com:django-debug-toolbar/django-debug-toolbar
-rw-r--r--README.rst7
-rw-r--r--debug_toolbar/panels/request_vars.py18
-rw-r--r--debug_toolbar/panels/sql.py2
-rw-r--r--debug_toolbar/panels/template.py2
-rw-r--r--debug_toolbar/templates/debug_toolbar/panels/sql.html3
-rw-r--r--debug_toolbar/templatetags/__init__.py0
-rw-r--r--debug_toolbar/templatetags/debug_toolbar_utils.py11
-rw-r--r--tests/tests.py25
8 files changed, 60 insertions, 8 deletions
diff --git a/README.rst b/README.rst
index 0ec29e4..68fa2c2 100644
--- a/README.rst
+++ b/README.rst
@@ -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('&lt;no view&gt;', 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')