aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRob Hudson2009-09-08 15:26:04 -0700
committerRob Hudson2009-09-08 15:26:04 -0700
commit20ee57b927751fd0d492c428b82f64bebdb0e860 (patch)
tree3868c75256ad7b15f25aa0fb571ff11f9fc3de4a
parent81da67bbfcd18ac9802f652155c331229d7967f2 (diff)
downloaddjango-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.py11
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',
}