Skip to content

Commit d9a2437

Browse files
committed
Merge pull request django-commons#171 from thinred/master
Fixes error I encounter when no view is executed
2 parents c61daab + 4275314 commit d9a2437

File tree

2 files changed

+36
-7
lines changed

2 files changed

+36
-7
lines changed

debug_toolbar/panels/request_vars.py

+12-6
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ class RequestVarsDebugPanel(DebugPanel):
99
name = 'RequestVars'
1010
has_content = True
1111

12+
def __init__(self, *args, **kwargs):
13+
DebugPanel.__init__(self, *args, **kwargs)
14+
self.view_func = None
15+
self.view_args = None
16+
self.view_kwargs = None
17+
1218
def nav_title(self):
1319
return _('Request Vars')
1420

@@ -29,18 +35,18 @@ def process_view(self, request, view_func, view_args, view_kwargs):
2935
def content(self):
3036
context = self.context.copy()
3137

32-
if hasattr(self.view_func, '__name__'):
33-
view_name = self.view_func.__name__
34-
elif hasattr(self.view_func, '__class__'):
35-
view_name = self.view_func.__class__.__name__
38+
if self.view_func is not None:
39+
module = self.view_func.__module__
40+
name = getattr(self.view_func, '__name__', None) or self.view_func.__class__.__name__
41+
view_func = '%s.%s' % (module, name)
3642
else:
37-
view_name = '<unknown>'
43+
view_func = '<no view>'
3844

3945
context.update({
4046
'get': [(k, self.request.GET.getlist(k)) for k in self.request.GET],
4147
'post': [(k, self.request.POST.getlist(k)) for k in self.request.POST],
4248
'cookies': [(k, self.request.COOKIES.get(k)) for k in self.request.COOKIES],
43-
'view_func': '%s.%s' % (self.view_func.__module__, view_name),
49+
'view_func': view_func,
4450
'view_args': self.view_args,
4551
'view_kwargs': self.view_kwargs
4652
})

debug_toolbar/tests/tests.py

+24-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from debug_toolbar.middleware import DebugToolbarMiddleware
22
from debug_toolbar.panels.sql import SQLDebugPanel
3+
from debug_toolbar.panels.request_vars import RequestVarsDebugPanel
34
from debug_toolbar.toolbar.loader import DebugToolbar
45
from debug_toolbar.utils.tracking import pre_dispatch, post_dispatch, callbacks
56

@@ -133,6 +134,28 @@ def test_request_urlconf_module(self):
133134
self.assertEquals(request.urlconf.urlpatterns[0]._callback_str, 'debug_toolbar.views.debug_media')
134135
self.assertEquals(request.urlconf.urlpatterns[-1].urlconf_name.__name__, 'debug_toolbar.tests.urls')
135136

137+
def test_with_process_view(self):
138+
request = self.request
139+
140+
def _test_view(request):
141+
return HttpResponse('')
142+
143+
with Settings(DEBUG=True):
144+
panel = self.toolbar.get_panel(RequestVarsDebugPanel)
145+
panel.process_request(request)
146+
panel.process_view(request, _test_view, [], {})
147+
content = panel.content()
148+
self.assertIn('debug_toolbar.tests.tests._test_view', content)
149+
150+
def test_without_process_view(self):
151+
request = self.request
152+
153+
with Settings(DEBUG=True):
154+
panel = self.toolbar.get_panel(RequestVarsDebugPanel)
155+
panel.process_request(request)
156+
content = panel.content()
157+
self.assertIn('&lt;no view&gt;', content)
158+
136159
class SQLPanelTestCase(BaseTestCase):
137160
def test_recording(self):
138161
panel = self.toolbar.get_panel(SQLDebugPanel)
@@ -281,4 +304,4 @@ def test(**kwargs):
281304
self.assertTrue('kwargs' in foo, foo)
282305
self.assertTrue(len(foo['kwargs']), 1)
283306
self.assertTrue('foo' in foo['kwargs'])
284-
self.assertEquals(foo['kwargs']['foo'], 'bar')
307+
self.assertEquals(foo['kwargs']['foo'], 'bar')

0 commit comments

Comments
 (0)