From 89da13b76ce3370dcf86750758d8a8d5d2960500 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Mon, 14 Sep 2009 07:58:48 +0000 Subject: Provide wrapper behavior to bfg_view decorator. --- repoze/bfg/tests/test_zcml.py | 1 + repoze/bfg/view.py | 7 ++++++- repoze/bfg/zcml.py | 4 +++- 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 -- cgit v1.2.3