summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBert JW Regeer <bertjw@regeer.org>2016-07-16 20:05:51 -0600
committerBert JW Regeer <bertjw@regeer.org>2016-07-16 20:14:28 -0600
commit412ed2e1988e2fd70d02e4176c9c9c7855b0093c (patch)
treee1677888168796d0bc00942f856b638ebabb4d7e
parentf169cafa91b20d49aa40124bba90d26e24461517 (diff)
downloadpyramid-412ed2e1988e2fd70d02e4176c9c9c7855b0093c.tar.gz
pyramid-412ed2e1988e2fd70d02e4176c9c9c7855b0093c.tar.bz2
pyramid-412ed2e1988e2fd70d02e4176c9c9c7855b0093c.zip
Warn if the renderer response is text_type but no charset
If the Response contains no charset we can't use Response.text. We now implicitly encode to UTF-8 after showing a warning.
-rw-r--r--pyramid/renderers.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/pyramid/renderers.py b/pyramid/renderers.py
index 9b3f19510..324c1b02a 100644
--- a/pyramid/renderers.py
+++ b/pyramid/renderers.py
@@ -1,6 +1,7 @@
import json
import os
import re
+import warnings
from zope.interface import (
implementer,
@@ -467,7 +468,17 @@ class RendererHelper(object):
if result is not None:
if isinstance(result, text_type):
- response.text = result
+ if response.charset is None:
+ warnings.warn(
+ "Renderer returned a result of type {0}, "
+ "however the response Content-Type <{1}> does not "
+ "have a charset. Implicitly encoding the result as "
+ "UTF-8.".format(type(result), response.content_type),
+ RuntimeWarning
+ )
+ response.body = result.encode('UTF-8')
+ else:
+ response.text = result
elif isinstance(result, bytes):
response.body = result
elif hasattr(result, '__iter__'):