diff options
| author | Rob Hudson | 2009-09-08 15:26:04 -0700 | 
|---|---|---|
| committer | Rob Hudson | 2009-09-08 15:26:04 -0700 | 
| commit | 20ee57b927751fd0d492c428b82f64bebdb0e860 (patch) | |
| tree | 3868c75256ad7b15f25aa0fb571ff11f9fc3de4a | |
| parent | 81da67bbfcd18ac9802f652155c331229d7967f2 (diff) | |
| download | django-debug-toolbar-20ee57b927751fd0d492c428b82f64bebdb0e860.tar.bz2 | |
Fixed an issue where the panel navigation might have a different number of
queries than the panel pane if SQL queries happened in between calls.
This caches the queries off in an array to be used in both places.  If the
possibility of queries happening elsewhere occurs, the SQL panel should
probably be moved lower in the execution stack.
| -rw-r--r-- | debug_toolbar/panels/sql.py | 11 | 
1 files changed, 6 insertions, 5 deletions
| diff --git a/debug_toolbar/panels/sql.py b/debug_toolbar/panels/sql.py index a53a8d4..244905b 100644 --- a/debug_toolbar/panels/sql.py +++ b/debug_toolbar/panels/sql.py @@ -91,13 +91,15 @@ class SQLDebugPanel(DebugPanel):      def __init__(self):          self._offset = len(connection.queries)          self._sql_time = 0 +        self._queries = []      def nav_title(self):          return 'SQL'      def nav_subtitle(self): -        self._sql_time = sum([q['duration'] for q in connection.queries[self._offset:]]) -        num_queries = len(connection.queries) - self._offset +        self._queries = connection.queries[self._offset:] +        self._sql_time = sum([q['duration'] for q in self._queries]) +        num_queries = len(self._queries)          return "%d %s in %.2fms" % (              num_queries,              (num_queries == 1) and 'query' or 'queries', @@ -111,9 +113,8 @@ class SQLDebugPanel(DebugPanel):          return ''      def content(self): -        sql_queries = connection.queries[self._offset:]          width_ratio_tally = 0 -        for query in sql_queries: +        for query in self._queries:              query['sql'] = reformat_sql(query['sql'])              try:                  query['width_ratio'] = (query['duration'] / self._sql_time) * 100 @@ -123,7 +124,7 @@ class SQLDebugPanel(DebugPanel):              width_ratio_tally += query['width_ratio']          context = { -            'queries': sql_queries, +            'queries': self._queries,              'sql_time': self._sql_time,              'is_mysql': settings.DATABASE_ENGINE == 'mysql',          } | 
