aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAymeric Augustin2013-10-17 21:30:15 +0200
committerAymeric Augustin2013-10-17 21:30:15 +0200
commit4d829c450327e015ee5d6919f6f5029079b7ebe0 (patch)
treecada8a5dec45e5dd2a138bc47c33002eb7278d5a
parentdaf14b5c363d4aef842d4a46eb1c6b603e5c10b7 (diff)
downloaddjango-debug-toolbar-4d829c450327e015ee5d6919f6f5029079b7ebe0.tar.bz2
Support DEFAULT_CHARSET != 'utf-8'. Fix #15.
-rw-r--r--debug_toolbar/middleware.py2
-rw-r--r--tests/tests.py15
-rw-r--r--tests/urls.py12
-rw-r--r--tests/views.py9
4 files changed, 29 insertions, 9 deletions
diff --git a/debug_toolbar/middleware.py b/debug_toolbar/middleware.py
index 0d07411..b0863d9 100644
--- a/debug_toolbar/middleware.py
+++ b/debug_toolbar/middleware.py
@@ -135,7 +135,7 @@ class DebugToolbarMiddleware(object):
for panel in toolbar.panels:
panel.process_response(request, response)
response.content = replace_insensitive(
- force_text(response.content),
+ force_text(response.content, encoding=settings.DEFAULT_CHARSET),
self.tag,
force_text(toolbar.render_toolbar() + self.tag))
if response.get('Content-Length', None):
diff --git a/tests/tests.py b/tests/tests.py
index 5390025..6883428 100644
--- a/tests/tests.py
+++ b/tests/tests.py
@@ -1,3 +1,5 @@
+# coding: utf-8
+
from __future__ import unicode_literals
import threading
@@ -161,6 +163,19 @@ class DebugToolbarTestCase(BaseTestCase):
self.assertEqual(stats['view_kwargs'], 'None')
self.assertEqual(stats['view_func'], '<no view>')
+ def test_non_utf8_charset(self):
+ with self.settings(DEBUG=True,
+ DEFAULT_CHARSET='iso-8859-1',
+ INTERNAL_IPS=['127.0.0.1']):
+
+ response = self.client.get('/regular/ASCII/')
+ self.assertContains(response, 'ASCII') # template
+ self.assertContains(response, 'djDebug') # toolbar
+
+ response = self.client.get('/regular/LÀTÍN/')
+ self.assertContains(response, 'LÀTÍN') # template
+ self.assertContains(response, 'djDebug') # toolbar
+
class DebugToolbarNameFromObjectTest(BaseTestCase):
def test_func(self):
diff --git a/tests/urls.py b/tests/urls.py
index 9c24c1e..4fb51c9 100644
--- a/tests/urls.py
+++ b/tests/urls.py
@@ -12,10 +12,10 @@ from django.contrib import admin
admin.autodiscover()
-urlpatterns = patterns('',
- # This pattern should be last to ensure tests still work
- url(r'^resolving1/(.+)/(.+)/$', 'tests.views.resolving_view', name='positional-resolving'),
- url(r'^resolving2/(?P<arg1>.+)/(?P<arg2>.+)/$', 'tests.views.resolving_view'),
- url(r'^resolving3/(.+)/$', 'tests.views.resolving_view', { 'arg2' : 'default' }),
- url(r'^execute_sql/$', 'tests.views.execute_sql'),
+urlpatterns = patterns('tests.views',
+ url(r'^resolving1/(.+)/(.+)/$', 'resolving_view', name='positional-resolving'),
+ url(r'^resolving2/(?P<arg1>.+)/(?P<arg2>.+)/$', 'resolving_view'),
+ url(r'^resolving3/(.+)/$', 'resolving_view', { 'arg2' : 'default' }),
+ url(r'^regular/(?P<title>.*)/$', 'regular_view'),
+ url(r'^execute_sql/$', 'execute_sql'),
)
diff --git a/tests/views.py b/tests/views.py
index ec9f30e..f756023 100644
--- a/tests/views.py
+++ b/tests/views.py
@@ -3,12 +3,17 @@ from __future__ import unicode_literals
from django.contrib.auth.models import User
from django.http import HttpResponse
+
def execute_sql(request):
list(User.objects.all())
-
return HttpResponse()
+
+def regular_view(request, title='Test'):
+ content = '<html><head><title>%s</title><body></body></html>' % title
+ return HttpResponse(content)
+
+
def resolving_view(request, arg1, arg2):
# see test_url_resolving in tests.py
return HttpResponse()
-