summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Merickel <michael@merickel.org>2015-01-05 23:24:40 -0600
committerMichael Merickel <michael@merickel.org>2015-01-05 23:24:40 -0600
commit469f410c38b49b895f4f31de0423be0a4f2de47a (patch)
tree38484eb24840fdd5693f560d2c15da4aa3f3d7b5
parent0414b7c7b2e3ea45d4dcbdf273a9e332238a0f50 (diff)
parentf0a9dfba27012bcf84fccd445b0fcaa1bca32382 (diff)
downloadpyramid-469f410c38b49b895f4f31de0423be0a4f2de47a.tar.gz
pyramid-469f410c38b49b895f4f31de0423be0a4f2de47a.tar.bz2
pyramid-469f410c38b49b895f4f31de0423be0a4f2de47a.zip
Merge pull request #1417 from lrowe/renderer_app_iter
Support returning app_iter from renderer.
-rw-r--r--pyramid/renderers.py4
-rw-r--r--pyramid/tests/test_renderers.py25
2 files changed, 25 insertions, 4 deletions
diff --git a/pyramid/renderers.py b/pyramid/renderers.py
index d57671865..d840cc317 100644
--- a/pyramid/renderers.py
+++ b/pyramid/renderers.py
@@ -453,6 +453,10 @@ class RendererHelper(object):
if result is not None:
if isinstance(result, text_type):
response.text = result
+ elif isinstance(result, bytes):
+ response.body = result
+ elif hasattr(result, '__iter__'):
+ response.app_iter = result
else:
response.body = result
diff --git a/pyramid/tests/test_renderers.py b/pyramid/tests/test_renderers.py
index 21878b41f..30fdef051 100644
--- a/pyramid/tests/test_renderers.py
+++ b/pyramid/tests/test_renderers.py
@@ -194,8 +194,8 @@ class TestRendererHelper(unittest.TestCase):
helper = self._makeOne('loo.foo')
response = helper.render_to_response('values', {},
request=request)
- self.assertEqual(response.body[0], 'values')
- self.assertEqual(response.body[1], {})
+ self.assertEqual(response.app_iter[0], 'values')
+ self.assertEqual(response.app_iter[1], {})
def test_get_renderer(self):
factory = self._registerRendererFactory()
@@ -212,8 +212,8 @@ class TestRendererHelper(unittest.TestCase):
request = testing.DummyRequest()
response = 'response'
response = helper.render_view(request, response, view, context)
- self.assertEqual(response.body[0], 'response')
- self.assertEqual(response.body[1],
+ self.assertEqual(response.app_iter[0], 'response')
+ self.assertEqual(response.app_iter[1],
{'renderer_info': helper,
'renderer_name': 'loo.foo',
'request': request,
@@ -290,6 +290,23 @@ class TestRendererHelper(unittest.TestCase):
response = helper._make_response(la.encode('utf-8'), request)
self.assertEqual(response.body, la.encode('utf-8'))
+ def test__make_response_result_is_iterable(self):
+ from pyramid.response import Response
+ request = testing.DummyRequest()
+ request.response = Response()
+ helper = self._makeOne('loo.foo')
+ la = text_('/La Pe\xc3\xb1a', 'utf-8')
+ response = helper._make_response([la.encode('utf-8')], request)
+ self.assertEqual(response.body, la.encode('utf-8'))
+
+ def test__make_response_result_is_other(self):
+ self._registerResponseFactory()
+ request = None
+ helper = self._makeOne('loo.foo')
+ result = object()
+ response = helper._make_response(result, request)
+ self.assertEqual(response.body, result)
+
def test__make_response_result_is_None_no_body(self):
from pyramid.response import Response
request = testing.DummyRequest()