aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--debug_toolbar/utils/__init__.py6
-rw-r--r--tests/tests.py12
2 files changed, 14 insertions, 4 deletions
diff --git a/debug_toolbar/utils/__init__.py b/debug_toolbar/utils/__init__.py
index 297c901..75f3024 100644
--- a/debug_toolbar/utils/__init__.py
+++ b/debug_toolbar/utils/__init__.py
@@ -7,6 +7,7 @@ import sys
from django.conf import settings
from django.views.debug import linebreak_iter
+from django.utils.encoding import force_text
from django.utils.html import escape
from django.utils.safestring import mark_safe
from django.utils import six
@@ -39,10 +40,7 @@ def tidy_stacktrace(stack):
continue
if socketserver_path in s_path:
continue
- if not text:
- text = ''
- else:
- text = (''.join(text)).strip()
+ text = (''.join(force_text(t) for t in text)).strip() if text else ''
trace.append((path, line_no, func_name, text))
return trace
diff --git a/tests/tests.py b/tests/tests.py
index 6883428..6e0cd9b 100644
--- a/tests/tests.py
+++ b/tests/tests.py
@@ -213,6 +213,18 @@ class SQLPanelTestCase(BaseTestCase):
# ensure the stacktrace is populated
self.assertTrue(len(query[1]['stacktrace']) > 0)
+ def test_non_ascii_query(self):
+ panel = self.toolbar.get_panel(SQLDebugPanel)
+ self.assertEqual(len(panel._queries), 0)
+
+ # non-ASCII query
+ list(User.objects.extra(where=["username = 'café'"]))
+ self.assertEqual(len(panel._queries), 1)
+
+ # non-ASCII parameters
+ list(User.objects.filter(username='café'))
+ self.assertEqual(len(panel._queries), 2)
+
@unittest.skipUnless(connection.vendor=='postgresql',
'Test valid only on PostgreSQL')
def test_erroneous_query(self):