aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew J Morrison2010-12-08 08:42:57 -0600
committerRob Hudson2010-12-08 08:20:12 -0800
commit6578f0b8ea3b26022bb5161a40a77c6b15de21ae (patch)
treeafb0306343526590bc5f5b7b93f0b4438c81700f
parent3a6c1d9daddfca3d37522ae6dc029b3a4a7a7206 (diff)
downloaddjango-debug-toolbar-6578f0b8ea3b26022bb5161a40a77c6b15de21ae.tar.bz2
Added clean_params method to DatabaseStatTracker to scrub non-unicode
data for displaying on the sql panel Signed-off-by: Rob Hudson <rob@cogit8.org>
-rw-r--r--debug_toolbar/panels/sql.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/debug_toolbar/panels/sql.py b/debug_toolbar/panels/sql.py
index e1e9bdf..299da66 100644
--- a/debug_toolbar/panels/sql.py
+++ b/debug_toolbar/panels/sql.py
@@ -12,7 +12,7 @@ from django.views.debug import linebreak_iter
from django.template import Node
from django.template.loader import render_to_string
from django.utils import simplejson
-from django.utils.encoding import force_unicode
+from django.utils.encoding import force_unicode, DjangoUnicodeDecodeError
from django.utils.hashcompat import sha_constructor
from django.utils.translation import ugettext_lazy as _
@@ -85,12 +85,24 @@ class DatabaseStatTracker(util.CursorDebugWrapper):
Replacement for CursorDebugWrapper which stores additional information
in `connection.queries`.
"""
+ def clean_params(self, params):
+ clean_params = ()
+ for x in params:
+ try:
+ force_unicode(x, strings_only=True)
+ except DjangoUnicodeDecodeError:
+ clean_params += ("<non unicode object>", )
+ else:
+ clean_params += (x, )
+ return clean_params
+
def execute(self, sql, params=()):
start = datetime.now()
try:
return self.cursor.execute(sql, params)
finally:
stop = datetime.now()
+ params = self.clean_params(params)
duration = ms_from_timedelta(stop - start)
stacktrace = tidy_stacktrace(traceback.extract_stack())
_params = ''