diff options
| author | Jannis Leidel | 2013-04-24 02:51:17 -0700 |
|---|---|---|
| committer | Jannis Leidel | 2013-04-24 02:51:17 -0700 |
| commit | 1390c405f6718dc44169503176f610f194fe6d41 (patch) | |
| tree | 70466742c10a71b0164972112bf528a527ada90f /debug_toolbar/panels/sql.py | |
| parent | 49c09c0b9afb588fa3cde047075331ea81d18a55 (diff) | |
| parent | f6b515f71aea595c303d287f121a34ec31c4784c (diff) | |
| download | django-debug-toolbar-1390c405f6718dc44169503176f610f194fe6d41.tar.bz2 | |
Merge pull request #347 from midiotthimble/sql-panel-refactor
Request Line is too large (400) sometimes
Diffstat (limited to 'debug_toolbar/panels/sql.py')
| -rw-r--r-- | debug_toolbar/panels/sql.py | 35 |
1 files changed, 7 insertions, 28 deletions
diff --git a/debug_toolbar/panels/sql.py b/debug_toolbar/panels/sql.py index a492888..74729c7 100644 --- a/debug_toolbar/panels/sql.py +++ b/debug_toolbar/panels/sql.py @@ -1,14 +1,15 @@ -import re import uuid +from copy import copy from django.db.backends import BaseDatabaseWrapper -from django.utils.html import escape from django.utils.translation import ugettext_lazy as _, ungettext_lazy as __ +from debug_toolbar.forms import SQLSelectForm from debug_toolbar.utils.compat.db import connections from debug_toolbar.middleware import DebugToolbarMiddleware from debug_toolbar.panels import DebugPanel -from debug_toolbar.utils import sqlparse, render_stacktrace +from debug_toolbar.utils import render_stacktrace +from debug_toolbar.utils.sql import reformat_sql from debug_toolbar.utils.tracking.db import CursorWrapper from debug_toolbar.utils.tracking import replace_call @@ -170,6 +171,9 @@ class SQLDebugPanel(DebugPanel): query['iso_level'] = get_isolation_level_display(query['engine'], query['iso_level']) if 'trans_status' in query: query['trans_status'] = get_transaction_status_display(query['engine'], query['trans_status']) + + query['form'] = SQLSelectForm(auto_id=None, initial=copy(query)) + if query['sql']: query['sql'] = reformat_sql(query['sql']) query['rgb_color'] = self._databases[alias]['rgb_color'] @@ -193,28 +197,3 @@ class SQLDebugPanel(DebugPanel): 'queries': [q for a, q in self._queries], 'sql_time': self._sql_time, }) - - -class BoldKeywordFilter(sqlparse.filters.Filter): - """sqlparse filter to bold SQL keywords""" - def process(self, stack, stream): - """Process the token stream""" - for token_type, value in stream: - is_keyword = token_type in sqlparse.tokens.Keyword - if is_keyword: - yield sqlparse.tokens.Text, '<strong>' - yield token_type, escape(value) - if is_keyword: - yield sqlparse.tokens.Text, '</strong>' - - -def swap_fields(sql): - return re.sub('SELECT</strong> (.*?) <strong>FROM', 'SELECT</strong> <a class="djDebugUncollapsed djDebugToggle" href="#">•••</a> ' + - '<a class="djDebugCollapsed djDebugToggle" href="#">\g<1></a> <strong>FROM', sql) - - -def reformat_sql(sql): - stack = sqlparse.engine.FilterStack() - stack.preprocess.append(BoldKeywordFilter()) # add our custom filter - stack.postprocess.append(sqlparse.filters.SerializerUnicode()) # tokens -> strings - return swap_fields(''.join(stack.run(sql))) |
