aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Cramer2011-06-14 12:54:46 -0700
committerDavid Cramer2011-06-14 12:54:46 -0700
commitb431d64f3b9722f7ae17f30f0168412d419c0d43 (patch)
tree71e6f303fc777a24020024bf5b223e6f78dbc4c6
parent7504141f19ef1bdaaf91d95461dad35ac84b5211 (diff)
downloaddjango-debug-toolbar-b431d64f3b9722f7ae17f30f0168412d419c0d43.tar.bz2
Moved view function name extraction into debug_toolbar.utils.get_name_from_obj
-rw-r--r--debug_toolbar/panels/request_vars.py10
-rw-r--r--debug_toolbar/utils/__init__.py24
-rw-r--r--tests/tests.py20
3 files changed, 43 insertions, 11 deletions
diff --git a/debug_toolbar/panels/request_vars.py b/debug_toolbar/panels/request_vars.py
index 60214ae..6e7dd03 100644
--- a/debug_toolbar/panels/request_vars.py
+++ b/debug_toolbar/panels/request_vars.py
@@ -1,6 +1,8 @@
from django.template.loader import render_to_string
from django.utils.translation import ugettext_lazy as _
+
from debug_toolbar.panels import DebugPanel
+from debug_toolbar.utils import get_name_from_obj
class RequestVarsDebugPanel(DebugPanel):
"""
@@ -36,17 +38,15 @@ class RequestVarsDebugPanel(DebugPanel):
context = self.context.copy()
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)
+ name = get_name_from_obj(self.view_func)
else:
- view_func = '<no view>'
+ name = '<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': view_func,
+ 'view_func': name,
'view_args': self.view_args,
'view_kwargs': self.view_kwargs
})
diff --git a/debug_toolbar/utils/__init__.py b/debug_toolbar/utils/__init__.py
index 2ce38db..c4dc160 100644
--- a/debug_toolbar/utils/__init__.py
+++ b/debug_toolbar/utils/__init__.py
@@ -47,7 +47,7 @@ def get_template_info(source, context_lines=3):
line = 0
upto = 0
source_lines = []
- before = during = after = ""
+ # before = during = after = ""
origin, (start, end) = source
template_source = origin.reload()
@@ -55,9 +55,9 @@ def get_template_info(source, context_lines=3):
for num, next in enumerate(linebreak_iter(template_source)):
if start >= upto and end <= next:
line = num
- before = template_source[upto:start]
- during = template_source[start:end]
- after = template_source[end:next]
+ # before = template_source[upto:start]
+ # during = template_source[start:end]
+ # after = template_source[end:next]
source_lines.append((num, template_source[upto:next]))
upto = next
@@ -75,4 +75,18 @@ def get_template_info(source, context_lines=3):
return {
'name': origin.name,
'context': context,
- } \ No newline at end of file
+ }
+
+def get_name_from_obj(obj):
+ if hasattr(obj, '__name__'):
+ name = obj.__name__
+ elif hasattr(obj, '__class__') and hasattr(obj.__class__, '__name__'):
+ name = obj.__class__.__name__
+ else:
+ name = '<unknown>'
+
+ if hasattr(obj, '__module__'):
+ module = obj.__module__
+ name = '%s.%s' % (module, name)
+
+ return name \ No newline at end of file
diff --git a/tests/tests.py b/tests/tests.py
index 84b4418..4936775 100644
--- a/tests/tests.py
+++ b/tests/tests.py
@@ -2,10 +2,12 @@ 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 import get_name_from_obj
from debug_toolbar.utils.tracking import pre_dispatch, post_dispatch, callbacks
from django.conf import settings
from django.contrib.auth.models import User
+from django.http import HttpResponse
from django.test import TestCase
from dingus import Dingus
@@ -145,7 +147,7 @@ class DebugToolbarTestCase(BaseTestCase):
panel.process_request(request)
panel.process_view(request, _test_view, [], {})
content = panel.content()
- self.assertIn('debug_toolbar.tests.tests._test_view', content)
+ self.assertIn('tests.tests._test_view', content)
def test_without_process_view(self):
request = self.request
@@ -156,6 +158,22 @@ class DebugToolbarTestCase(BaseTestCase):
content = panel.content()
self.assertIn('&lt;no view&gt;', content)
+class DebugToolbarNameFromObjectTest(BaseTestCase):
+ def test_func(self):
+ def x():
+ return 1
+ res = get_name_from_obj(x)
+ self.assertEquals(res, 'tests.tests.x')
+
+ def test_lambda(self):
+ res = get_name_from_obj(lambda:1)
+ self.assertEquals(res, 'tests.tests.<lambda>')
+
+ def test_class(self):
+ class A: pass
+ res = get_name_from_obj(A)
+ self.assertEquals(res, 'tests.tests.A')
+
class SQLPanelTestCase(BaseTestCase):
def test_recording(self):
panel = self.toolbar.get_panel(SQLDebugPanel)