diff options
| author | Chris McDonough <chrism@plope.com> | 2012-03-11 21:06:08 -0700 |
|---|---|---|
| committer | Chris McDonough <chrism@plope.com> | 2012-03-11 21:06:08 -0700 |
| commit | 3b4deef1f6a7825c7c3eb904af15f4d626793b5f (patch) | |
| tree | 58833d5e99f83199cb732662cc1a11353ebf7579 | |
| parent | 74d096f1fa08fbbbe9a83ef1531af8e89cc1aff7 (diff) | |
| parent | 4a6f532316421ef85caefc706e191d6977e71feb (diff) | |
| download | pyramid-3b4deef1f6a7825c7c3eb904af15f4d626793b5f.tar.gz pyramid-3b4deef1f6a7825c7c3eb904af15f4d626793b5f.tar.bz2 pyramid-3b4deef1f6a7825c7c3eb904af15f4d626793b5f.zip | |
Merge branch '1.3-branch'
| -rw-r--r-- | CHANGES.txt | 9 | ||||
| -rw-r--r-- | pyramid/config/views.py | 14 | ||||
| -rw-r--r-- | pyramid/tests/test_config/test_views.py | 12 |
3 files changed, 34 insertions, 1 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index 8076bc35d..abdb3d80a 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,12 @@ +Next release +============ + +Bug Fixes +--------- + +- ``config.add_view(<aninstancemethod>)`` raised AttributeError involving + ``__text__``. See https://github.com/Pylons/pyramid/issues/461 + 1.3b2 (2012-03-02) ================== diff --git a/pyramid/config/views.py b/pyramid/config/views.py index 0f70c604f..432db79cf 100644 --- a/pyramid/config/views.py +++ b/pyramid/config/views.py @@ -139,7 +139,19 @@ class ViewDeriver(object): self.http_cached_view( self.decorated_view( self.rendered_view( - self.mapped_view(view))))))))) + self.mapped_view( + self.text_wrapped_view( + view)))))))))) + + @wraps_view + def text_wrapped_view(self, view): + # if the method is an instance method, we need to wrap it in order + # to be able to assign a __text__ value to it later. see #461. + if inspect.ismethod(view): + def text_wrapper(context, request): + return view(context, request) + return text_wrapper + return view @wraps_view def mapped_view(self, view): diff --git a/pyramid/tests/test_config/test_views.py b/pyramid/tests/test_config/test_views.py index 7bfe174b7..8877c011e 100644 --- a/pyramid/tests/test_config/test_views.py +++ b/pyramid/tests/test_config/test_views.py @@ -218,6 +218,18 @@ class TestViewsConfigurationMixin(unittest.TestCase): result = wrapper(None, None) self.assertEqual(result, 'OK') + def test_add_view_as_instancemethod(self): + from pyramid.renderers import null_renderer + class View: + def index(self, context, request): + return 'OK' + view = View() + config=self._makeOne(autocommit=True) + config.add_view(view=view.index, renderer=null_renderer) + wrapper = self._getViewCallable(config) + result = wrapper(None, None) + self.assertEqual(result, 'OK') + def test_add_view_as_instance_requestonly(self): from pyramid.renderers import null_renderer class AView: |
