diff options
| author | David Cramer | 2011-06-14 12:54:46 -0700 |
|---|---|---|
| committer | David Cramer | 2011-06-14 12:54:46 -0700 |
| commit | b431d64f3b9722f7ae17f30f0168412d419c0d43 (patch) | |
| tree | 71e6f303fc777a24020024bf5b223e6f78dbc4c6 | |
| parent | 7504141f19ef1bdaaf91d95461dad35ac84b5211 (diff) | |
| download | django-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.py | 10 | ||||
| -rw-r--r-- | debug_toolbar/utils/__init__.py | 24 | ||||
| -rw-r--r-- | tests/tests.py | 20 |
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('<no view>', 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) |
