summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-09-14 07:58:48 +0000
committerChris McDonough <chrism@agendaless.com>2009-09-14 07:58:48 +0000
commit89da13b76ce3370dcf86750758d8a8d5d2960500 (patch)
treed90ce8bf5f7be33a7a75e7fd22cecd3b87f53859
parent4eb45e9de657bedeb0b03469781c35758500dfa2 (diff)
downloadpyramid-89da13b76ce3370dcf86750758d8a8d5d2960500.tar.gz
pyramid-89da13b76ce3370dcf86750758d8a8d5d2960500.tar.bz2
pyramid-89da13b76ce3370dcf86750758d8a8d5d2960500.zip
Provide wrapper behavior to bfg_view decorator.
-rw-r--r--repoze/bfg/tests/test_zcml.py1
-rw-r--r--repoze/bfg/view.py7
-rw-r--r--repoze/bfg/zcml.py4
3 files changed, 10 insertions, 2 deletions
diff --git a/repoze/bfg/tests/test_zcml.py b/repoze/bfg/tests/test_zcml.py
index 398159801..a92625fed 100644
--- a/repoze/bfg/tests/test_zcml.py
+++ b/repoze/bfg/tests/test_zcml.py
@@ -2103,6 +2103,7 @@ class TestBFGViewFunctionGrokker(unittest.TestCase):
obj.__containment__ = None
obj.__attr__ = None
obj.__template__ = None
+ obj.__wrapper_viewname__ = None
context = DummyContext()
result = grokker.grok('name', obj, context=context)
self.assertEqual(result, True)
diff --git a/repoze/bfg/view.py b/repoze/bfg/view.py
index 794c7fa65..ba96812e7 100644
--- a/repoze/bfg/view.py
+++ b/repoze/bfg/view.py
@@ -239,6 +239,9 @@ class bfg_view(object):
If ``template`` is not supplied, ``None`` is used (meaning that no
template is associated with this view).
+ If ``wrapper`` is not supplied, ``None`` is used (meaning that no
+ view wrapper is associated with this view).
+
If ``request_type`` is not supplied, the interface
``repoze.bfg.interfaces.IRequest`` is used, implying the standard
request interface type.
@@ -332,7 +335,7 @@ class bfg_view(object):
"""
def __init__(self, name='', request_type=None, for_=None, permission=None,
route_name=None, request_method=None, request_param=None,
- containment=None, attr=None, template=None):
+ containment=None, attr=None, template=None, wrapper=None):
self.name = name
self.request_type = request_type
self.for_ = for_
@@ -343,6 +346,7 @@ class bfg_view(object):
self.containment = containment
self.attr = attr
self.template = template
+ self.wrapper_viewname = wrapper
def __call__(self, wrapped):
_bfg_view = map_view(wrapped, self.attr, self.template)
@@ -355,6 +359,7 @@ class bfg_view(object):
_bfg_view.__request_method__ = self.request_method
_bfg_view.__request_param__ = self.request_param
_bfg_view.__containment__ = self.containment
+ _bfg_view.__wrapper_viewname__ = self.wrapper_viewname
return _bfg_view
def default_view(context, request, status):
diff --git a/repoze/bfg/zcml.py b/repoze/bfg/zcml.py
index 657105e34..40226b1d1 100644
--- a/repoze/bfg/zcml.py
+++ b/repoze/bfg/zcml.py
@@ -725,11 +725,13 @@ class BFGViewFunctionGrokker(martian.InstanceGrokker):
request_method = obj.__request_method__
request_param = obj.__request_param__
containment = obj.__containment__
+ wrapper = obj.__wrapper_viewname__
context = kw['context']
view(context, permission=permission, for_=for_,
view=obj, name=name, request_type=request_type,
route_name=route_name, request_method=request_method,
- request_param=request_param, containment=containment)
+ request_param=request_param, containment=containment,
+ wrapper=wrapper)
return True
return False