From 20ee57b927751fd0d492c428b82f64bebdb0e860 Mon Sep 17 00:00:00 2001 From: Rob Hudson Date: Tue, 8 Sep 2009 15:26:04 -0700 Subject: 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. --- debug_toolbar/panels/sql.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'debug_toolbar') 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', } -- cgit v1.2.3