aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Cramer2011-06-02 22:45:04 -0700
committerDavid Cramer2011-06-02 22:45:04 -0700
commitd9a2437e4907d3dc97f5300054700b48387a9502 (patch)
treed15821dcd6d4801adbd441798b39c9b807d4b50d
parentc61daab0ce10d9654ecb9ce70819233171885eae (diff)
parent42753146c9605513fe0a556796ed7ff37156c7a1 (diff)
downloaddjango-debug-toolbar-d9a2437e4907d3dc97f5300054700b48387a9502.tar.bz2
Merge pull request #171 from thinred/master
Fixes error I encounter when no view is executed
-rw-r--r--debug_toolbar/panels/request_vars.py18
-rw-r--r--debug_toolbar/tests/tests.py25
2 files changed, 36 insertions, 7 deletions
diff --git a/debug_toolbar/panels/request_vars.py b/debug_toolbar/panels/request_vars.py
index 632068e..13e563a 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 self.view_func.__class__.__name__
+ 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/tests/tests.py b/debug_toolbar/tests/tests.py
index 3fc2aff..9ff332e 100644
--- a/debug_toolbar/tests/tests.py
+++ b/debug_toolbar/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__, 'debug_toolbar.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')