From ff14a82cbff920e6fe60487d7f48e0e97836827a Mon Sep 17 00:00:00 2001 From: Tomasz Buchert Date: Thu, 2 Jun 2011 17:06:37 +0200 Subject: Fixes RequestVarsDebugPanel' object has no attribute 'view_func' bug. --- debug_toolbar/panels/request_vars.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 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 = '' + view_func = '' 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 }) -- cgit v1.2.3 From 42753146c9605513fe0a556796ed7ff37156c7a1 Mon Sep 17 00:00:00 2001 From: Tomasz Buchert Date: Fri, 3 Jun 2011 00:16:33 +0200 Subject: Test for bug: RequestVarsDebugPanel' object has no attribute 'view_func' --- debug_toolbar/tests/tests.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) 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('<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') -- cgit v1.2.3