diff options
| author | Matthew J Morrison | 2010-12-08 08:42:57 -0600 | 
|---|---|---|
| committer | Rob Hudson | 2010-12-08 08:20:12 -0800 | 
| commit | 6578f0b8ea3b26022bb5161a40a77c6b15de21ae (patch) | |
| tree | afb0306343526590bc5f5b7b93f0b4438c81700f | |
| parent | 3a6c1d9daddfca3d37522ae6dc029b3a4a7a7206 (diff) | |
| download | django-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.py | 14 | 
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 = '' | 
