diff options
| author | David Cramer | 2011-09-16 01:09:01 -0700 | 
|---|---|---|
| committer | David Cramer | 2011-09-16 01:09:01 -0700 | 
| commit | 8278bb0f24d925288740c23a2315e9c5a27a3290 (patch) | |
| tree | 5dce59d9bd497a19e6cbaf8aebfc697200368b11 /debug_toolbar/panels/__init__.py | |
| parent | 5a3813d2bb4fb63d66b1b8a13edb8354b36a28b4 (diff) | |
| parent | 69f1c7733e29ee9ea3e4670f2183deb52f58a871 (diff) | |
| download | django-debug-toolbar-8278bb0f24d925288740c23a2315e9c5a27a3290.tar.bz2 | |
Merge pull request #206 from lincolnloop/stats_decouple
Decouple statistics from presentation
Diffstat (limited to 'debug_toolbar/panels/__init__.py')
| -rw-r--r-- | debug_toolbar/panels/__init__.py | 49 | 
1 files changed, 34 insertions, 15 deletions
diff --git a/debug_toolbar/panels/__init__.py b/debug_toolbar/panels/__init__.py index fa2e4b6..b4f11fb 100644 --- a/debug_toolbar/panels/__init__.py +++ b/debug_toolbar/panels/__init__.py @@ -1,48 +1,67 @@ -"""Base DebugPanel class""" +from django.template.defaultfilters import slugify +from django.template.loader import render_to_string +from debug_toolbar.middleware import DebugToolbarMiddleware +  class DebugPanel(object):      """      Base class for debug panels.      """ -    # name = Base +    # name = 'Base' +    # template = 'debug_toolbar/panels/base.html'      has_content = False # If content returns something, set to true in subclass - +          # We'll maintain a local context instance so we can expose our template      # context variables to panels which need them:      context = {} - +          # Panel methods      def __init__(self, context={}):          self.context.update(context) - +        self.slug = slugify(self.name) +          def dom_id(self):          return 'djDebug%sPanel' % (self.name.replace(' ', '')) - +          def nav_title(self):          """Title showing in toolbar"""          raise NotImplementedError - +          def nav_subtitle(self):          """Subtitle showing until title in toolbar"""          return '' - +          def title(self):          """Title showing in panel"""          raise NotImplementedError - +          def url(self):          raise NotImplementedError - +          def content(self): -        raise NotImplementedError - +        if self.has_content: +            context = self.context.copy() +            context.update(self.get_stats()) +            return render_to_string(self.template, context) +     +    def record_stats(self, stats): +        toolbar = DebugToolbarMiddleware.get_current() +        panel_stats = toolbar.stats.get(self.slug) +        if panel_stats: +            panel_stats.update(stats) +        else: +            toolbar.stats[self.slug] = stats +     +    def get_stats(self): +        toolbar = DebugToolbarMiddleware.get_current() +        return toolbar.stats.get(self.slug, {}) +          # Standard middleware methods      def process_request(self, request):          pass - +          def process_view(self, request, view_func, view_args, view_kwargs):          pass - +          def process_response(self, request, response):          pass -  | 
