From e9271bf69ab50cb24e38ac2205847c8d32b83ca8 Mon Sep 17 00:00:00 2001 From: Rob Hudson Date: Mon, 6 Oct 2008 13:07:56 -0700 Subject: Just like EXPLAIN, adding the output of straight SELECT statements so you can view the raw SQL output. --- .../templates/debug_toolbar/panels/sql.html | 1 + .../templates/debug_toolbar/panels/sql_select.html | 30 +++++++++++++++++++++ debug_toolbar/urls.py | 1 + debug_toolbar/views.py | 31 ++++++++++++++++++++++ 4 files changed, 63 insertions(+) create mode 100644 debug_toolbar/templates/debug_toolbar/panels/sql_select.html diff --git a/debug_toolbar/templates/debug_toolbar/panels/sql.html b/debug_toolbar/templates/debug_toolbar/panels/sql.html index 6a2d077..2abb68f 100644 --- a/debug_toolbar/templates/debug_toolbar/panels/sql.html +++ b/debug_toolbar/templates/debug_toolbar/panels/sql.html @@ -13,6 +13,7 @@
{{ sql|safe }}| {{ h|upper }} | + {% endfor %} +
|---|
| {{ column|escape }} | + {% endfor %} +
Empty set
+{% endif %} diff --git a/debug_toolbar/urls.py b/debug_toolbar/urls.py index e0e4b7a..437d36b 100644 --- a/debug_toolbar/urls.py +++ b/debug_toolbar/urls.py @@ -9,5 +9,6 @@ from django.conf import settings urlpatterns = patterns('', url(r'^__debug__/m/(.*)$', 'debug_toolbar.views.debug_media'), + url(r'^__debug__/sql_select/$', 'debug_toolbar.views.sql_select', name='sql_select'), url(r'^__debug__/sql_explain/$', 'debug_toolbar.views.sql_explain', name='sql_explain'), ) diff --git a/debug_toolbar/views.py b/debug_toolbar/views.py index b67a70b..4b666e1 100644 --- a/debug_toolbar/views.py +++ b/debug_toolbar/views.py @@ -20,6 +20,37 @@ def debug_media(request, path): root = os.path.join(parent, 'media') return django.views.static.serve(request, path, root) +def sql_select(request): + """ + Returns the output of the SQL SELECT statement. + + Expected GET variables: + sql: urlencoded sql with positional arguments + params: JSON encoded parameter values + time: time for SQL to execute passed in from toolbar just for redisplay + hash: the hash of (secret + sql + params) for tamper checking + """ + from debug_toolbar.panels.sql import reformat_sql + sql = request.GET.get('sql', '') + params = request.GET.get('params', '') + hash = sha_constructor(settings.SECRET_KEY + sql + params).hexdigest() + if hash != request.GET.get('hash', ''): + return HttpResponse('