summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2012-03-11 21:05:04 -0700
committerChris McDonough <chrism@plope.com>2012-03-11 21:05:04 -0700
commit4a6f532316421ef85caefc706e191d6977e71feb (patch)
tree58833d5e99f83199cb732662cc1a11353ebf7579
parentcd7ca3187f2ab85d9b3e48ca2f1b592854c532e9 (diff)
downloadpyramid-4a6f532316421ef85caefc706e191d6977e71feb.tar.gz
pyramid-4a6f532316421ef85caefc706e191d6977e71feb.tar.bz2
pyramid-4a6f532316421ef85caefc706e191d6977e71feb.zip
- ``config.add_view(<aninstancemethod>)`` raised AttributeError involving
``__text__``. See https://github.com/Pylons/pyramid/issues/461 Fixes #461.
-rw-r--r--CHANGES.txt9
-rw-r--r--pyramid/config/views.py9
-rw-r--r--pyramid/tests/test_config/test_views.py6
3 files changed, 19 insertions, 5 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 f984e46f2..432db79cf 100644
--- a/pyramid/config/views.py
+++ b/pyramid/config/views.py
@@ -140,15 +140,16 @@ class ViewDeriver(object):
self.decorated_view(
self.rendered_view(
self.mapped_view(
- self.text_wrapped_view(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):
- if hasattr(view, '__text__'):
- return view
def text_wrapper(context, request):
return view(context, request)
- text_wrapper.__text__ = ''
return text_wrapper
return view
diff --git a/pyramid/tests/test_config/test_views.py b/pyramid/tests/test_config/test_views.py
index 13c00c2b6..8877c011e 100644
--- a/pyramid/tests/test_config/test_views.py
+++ b/pyramid/tests/test_config/test_views.py
@@ -221,10 +221,14 @@ class TestViewsConfigurationMixin(unittest.TestCase):
def test_add_view_as_instancemethod(self):
from pyramid.renderers import null_renderer
class View:
- def index(self, context, request): pass
+ 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