diff options
| author | John Anderson <sontek@gmail.com> | 2015-01-05 23:46:28 -0800 |
|---|---|---|
| committer | John Anderson <sontek@gmail.com> | 2015-01-05 23:46:28 -0800 |
| commit | ae7bcd7cabc53e0b500c6a79f30606e67217ad1d (patch) | |
| tree | 7c33b2a6244d03df275f4cce83f4f3f1f77c94bf | |
| parent | 83a400a3cd121fe65d33e796c28a199b35ab67e5 (diff) | |
| parent | 2d659e41d01926acaa8670c4d20be20300bcedb7 (diff) | |
| download | pyramid-ae7bcd7cabc53e0b500c6a79f30606e67217ad1d.tar.gz pyramid-ae7bcd7cabc53e0b500c6a79f30606e67217ad1d.tar.bz2 pyramid-ae7bcd7cabc53e0b500c6a79f30606e67217ad1d.zip | |
Merge branch 'master' of https://github.com/Pylons/pyramid into support_more_features_in_routes
Conflicts:
CHANGES.txt
| -rw-r--r-- | CHANGES.txt | 4 | ||||
| -rw-r--r-- | pyramid/renderers.py | 4 | ||||
| -rw-r--r-- | pyramid/tests/test_renderers.py | 25 |
3 files changed, 29 insertions, 4 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index 2079d5cff..0381c1820 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -64,6 +64,10 @@ Features a factory that will return a custom ``Response`` class. See https://github.com/Pylons/pyramid/pull/1499 +- Allow an iterator to be returned from a renderer. Previously it was only + possible to return bytes or unicode. + See https://github.com/Pylons/pyramid/pull/1417 + - Overall improvments for the ``proutes`` command. Added ``--format`` and ``--glob`` arguments to the command, introduced the ``method`` column for displaying available request methods, and improved the ``view`` 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() |
