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) | 
