diff options
| -rw-r--r-- | debug_toolbar/middleware.py | 13 | ||||
| -rw-r--r-- | debug_toolbar/panels/cache.py | 12 | ||||
| -rw-r--r-- | debug_toolbar/panels/sql.py | 35 | 
3 files changed, 34 insertions, 26 deletions
| diff --git a/debug_toolbar/middleware.py b/debug_toolbar/middleware.py index f49a29f..1d332c0 100644 --- a/debug_toolbar/middleware.py +++ b/debug_toolbar/middleware.py @@ -5,7 +5,6 @@ import imp  import thread  from django.conf import settings -from django.conf.urls.defaults import include, patterns  from django.http import HttpResponseRedirect  from django.shortcuts import render_to_response  from django.utils.encoding import smart_unicode @@ -97,6 +96,7 @@ class DebugToolbarMiddleware(object):              for panel in toolbar.panels:                  panel.process_request(request)              self.__class__.debug_toolbars[thread.get_ident()] = toolbar +            request.debug_toolbar = toolbar      def process_view(self, request, view_func, view_args, view_kwargs):          __traceback_hide__ = True @@ -124,13 +124,14 @@ class DebugToolbarMiddleware(object):                  )                  response.cookies = cookies          if 'gzip' not in response.get('Content-Encoding', '') and \ -           response.get('Content-Type', '').split(';')[0] in _HTML_TYPES: +            response.get('Content-Type', '').split(';')[0] in _HTML_TYPES: +            toolbar.stats = {}              for panel in toolbar.panels: -                panel.process_response(request, response) +                    panel.process_response(request, response)              response.content = replace_insensitive( -                smart_unicode(response.content), -                self.tag, -                smart_unicode(toolbar.render_toolbar() + self.tag)) +                    smart_unicode(response.content), +                    self.tag, +                    smart_unicode(toolbar.render_toolbar() + self.tag))              if response.get('Content-Length', None):                  response['Content-Length'] = len(response.content)          del self.__class__.debug_toolbars[ident] diff --git a/debug_toolbar/panels/cache.py b/debug_toolbar/panels/cache.py index 5617ec2..c03971d 100644 --- a/debug_toolbar/panels/cache.py +++ b/debug_toolbar/panels/cache.py @@ -95,11 +95,15 @@ class CacheDebugPanel(DebugPanel):      def url(self):          return '' -    def content(self): -        context = self.context.copy() -        context.update({ +    def process_response(self, request, response): +        self.stats = {              'cache_calls': len(self.cache.calls),              'cache_time': self.cache.total_time,              'cache': self.cache, -        }) +        } +        request.debug_toolbar.stats['cache'] = self.stats + +    def content(self): +        context = self.context.copy() +        context.update(self.stats)          return render_to_string('debug_toolbar/panels/cache.html', context) diff --git a/debug_toolbar/panels/sql.py b/debug_toolbar/panels/sql.py index 9687a5c..2eced7c 100644 --- a/debug_toolbar/panels/sql.py +++ b/debug_toolbar/panels/sql.py @@ -23,7 +23,7 @@ def cursor(func, self):      if not djdt:          return result      logger = djdt.get_panel(SQLDebugPanel) -     +      return CursorWrapper(result, self, logger=logger)  def get_isolation_level_display(engine, level): @@ -38,7 +38,7 @@ def get_isolation_level_display(engine, level):          }      else:          raise ValueError(engine) -     +      return choices.get(level)  def get_transaction_status_display(engine, level): @@ -53,7 +53,7 @@ def get_transaction_status_display(engine, level):          }      else:          raise ValueError(engine) -     +      return choices.get(level)  class SQLDebugPanel(DebugPanel): @@ -73,7 +73,7 @@ class SQLDebugPanel(DebugPanel):          self._databases = {}          self._transaction_status = {}          self._transaction_ids = {} -     +      def get_transaction_id(self, alias):          conn = connections[alias].connection          if not conn: @@ -97,9 +97,9 @@ class SQLDebugPanel(DebugPanel):                  self._transaction_ids[alias] = uuid.uuid4().hex              else:                  self._transaction_ids[alias] = None -         +          return self._transaction_ids[alias] -     +      def record(self, alias, **kwargs):          self._queries.append((alias, kwargs))          if alias not in self._databases: @@ -126,7 +126,7 @@ class SQLDebugPanel(DebugPanel):      def title(self):          count = len(self._databases) -         +          return __('SQL Queries from %(count)d connection', 'SQL Queries from %(count)d connections', count) % dict(              count=count,          ) @@ -134,7 +134,7 @@ class SQLDebugPanel(DebugPanel):      def url(self):          return '' -    def content(self): +    def process_response(self, request, response):          if self._queries:              width_ratio_tally = 0              colors = [ @@ -157,14 +157,14 @@ class SQLDebugPanel(DebugPanel):                          nn = 0                      rgb[nn] = nc                  db['rgb_color'] = rgb -         +              trans_ids = {}              trans_id = None              i = 0              for alias, query in self._queries:                  trans_id = query.get('trans_id')                  last_trans_id = trans_ids.get(alias) -                 +                  if trans_id != last_trans_id:                      if last_trans_id:                          self._queries[i-1][1]['ends_trans'] = True @@ -173,7 +173,7 @@ class SQLDebugPanel(DebugPanel):                          query['starts_trans'] = True                  if trans_id:                      query['in_trans'] = True -                 +                  query['alias'] = alias                  if 'iso_level' in query:                      query['iso_level'] = get_isolation_level_display(query['engine'], query['iso_level']) @@ -190,7 +190,7 @@ class SQLDebugPanel(DebugPanel):                  query['start_offset'] = width_ratio_tally                  query['end_offset'] = query['width_ratio'] + query['start_offset']                  width_ratio_tally += query['width_ratio'] -                 +                  stacktrace = []                  for frame in query['stacktrace']:                      params = map(escape, frame[0].rsplit('/', 1) + list(frame[1:])) @@ -204,14 +204,17 @@ class SQLDebugPanel(DebugPanel):              if trans_id:                  self._queries[i-1][1]['ends_trans'] = True -         -        context = self.context.copy() -        context.update({ + +        self.stats = {              'databases': sorted(self._databases.items(), key=lambda x: -x[1]['time_spent']),              'queries': [q for a, q in self._queries],              'sql_time': self._sql_time, -        }) +        } +        request.debug_toolbar.stats['sql'] = getattr(self, 'stats', None) +    def content(self): +        context = self.context.copy() +        context.update(self.stats)          return render_to_string('debug_toolbar/panels/sql.html', context)  class BoldKeywordFilter(sqlparse.filters.Filter): | 
