diff options
| author | Bert JW Regeer <bertjw@regeer.org> | 2016-07-16 20:05:51 -0600 |
|---|---|---|
| committer | Bert JW Regeer <bertjw@regeer.org> | 2016-07-16 20:14:28 -0600 |
| commit | 412ed2e1988e2fd70d02e4176c9c9c7855b0093c (patch) | |
| tree | e1677888168796d0bc00942f856b638ebabb4d7e | |
| parent | f169cafa91b20d49aa40124bba90d26e24461517 (diff) | |
| download | pyramid-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.py | 13 |
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__'): |
