From 8525bfc7fb2e868edf24fb5c6fea00bc871d7489 Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Sat, 26 Oct 2013 14:06:21 +0200 Subject: Don't crash on non ascii bytestrings in db params. Thanks Karen Tracey for the report. Fix #422. --- debug_toolbar/utils/tracking/db.py | 3 +-- tests/tests.py | 4 ++++ tests/urls.py | 3 +++ tests/views.py | 4 ++-- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/debug_toolbar/utils/tracking/db.py b/debug_toolbar/utils/tracking/db.py index b6bbb66..b4ceff0 100644 --- a/debug_toolbar/utils/tracking/db.py +++ b/debug_toolbar/utils/tracking/db.py @@ -73,8 +73,7 @@ class NormalCursorWrapper(object): def _quote_expr(self, element): if isinstance(element, six.string_types): - element = element.replace("'", "''") - return "'%s'" % element + return "'%s'" % force_text(element).replace("'", "''") else: return repr(element) diff --git a/tests/tests.py b/tests/tests.py index 3c28f79..7fb4a87 100644 --- a/tests/tests.py +++ b/tests/tests.py @@ -169,6 +169,10 @@ class DebugToolbarIntegrationTestCase(TestCase): self.assertContains(response, 'LÀTÍN') # template self.assertContains(response, 'djDebug') # toolbar + def test_non_ascii_bytes_in_db_params(self): + response = self.client.get('/non_ascii_bytes_in_db_params/') + self.assertContains(response, 'djàngó') + def test_non_ascii_session(self): response = self.client.get('/set_session/') self.assertContains(response, 'où') diff --git a/tests/urls.py b/tests/urls.py index 4bed492..8a88385 100644 --- a/tests/urls.py +++ b/tests/urls.py @@ -1,3 +1,5 @@ +# coding: utf-8 + """ URLpatterns for the debug toolbar. @@ -22,6 +24,7 @@ urlpatterns = patterns('tests.views', url(r'^resolving3/(.+)/$', 'resolving_view', { 'arg2' : 'default' }), url(r'^regular/(?P