summaryrefslogtreecommitdiff
path: root/repoze/bfg/view.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-12-19 18:40:19 +0000
committerChris McDonough <chrism@agendaless.com>2009-12-19 18:40:19 +0000
commit6225a24982dfaeffbc53f85d214159c08a0dbfc2 (patch)
treef6939169df6a212c1a95972e55007b285930c8e1 /repoze/bfg/view.py
parent3809abb4c55ef98541158e4f58593c6c6011034f (diff)
downloadpyramid-6225a24982dfaeffbc53f85d214159c08a0dbfc2.tar.gz
pyramid-6225a24982dfaeffbc53f85d214159c08a0dbfc2.tar.bz2
pyramid-6225a24982dfaeffbc53f85d214159c08a0dbfc2.zip
- Add a ``custom_predicates`` argument to the ``Configurator``
``add_view`` method, the ``bfg_view`` decorator and the attribute list of the ZCML ``view`` directive. If ``custom_predicates`` is specified, it must be a sequence of predicate callables (a predicate callable accepts two arguments: ``context`` and ``request`` and returns ``True`` or ``False``). The associated view callable will only be invoked if all custom predicates return ``True``. Use one or more custom predicates when no existing predefined predicate is useful. Predefined and custom predicates can be mixed freely. - Add a ``custom_predicates`` argument to the ``Configurator`` ``add_route`` and the attribute list of the ZCML ``route`` directive. If ``custom_predicates`` is specified, it must be a sequence of predicate callables (a predicate callable accepts two arguments: ``context`` and ``request`` and returns ``True`` or ``False``). The associated route will match will only be invoked if all custom predicates return ``True``, else route matching continues. Use one or more custom predicates when no existing predefined predicate is useful. Predefined and custom predicates can be mixed freely.
Diffstat (limited to 'repoze/bfg/view.py')
-rw-r--r--repoze/bfg/view.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/repoze/bfg/view.py b/repoze/bfg/view.py
index e5b271262..4aebe8832 100644
--- a/repoze/bfg/view.py
+++ b/repoze/bfg/view.py
@@ -322,6 +322,12 @@ class bfg_view(object):
expression. The view will only be invoked if the ``PATH_INFO``
WSGI environment variable matches the expression.
+ If ``custom_predicates`` is specified, it must be a sequence of
+ :term:`predicate` callables (a predicate callable accepts two
+ arguments: ``context`` and ``request`` and returns ``True`` or
+ ``False``). The view will only be invoked if all custom
+ predicates return ``True``.
+
Any individual or all parameters can be omitted. The simplest
bfg_view declaration then becomes::
@@ -427,7 +433,8 @@ 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, renderer=None, wrapper=None,
- xhr=False, accept=None, header=None, path_info=None):
+ xhr=False, accept=None, header=None, path_info=None,
+ custom_predicates=()):
self.name = name
self.request_type = request_type
self.for_ = for_
@@ -443,6 +450,7 @@ class bfg_view(object):
self.accept = accept
self.header = header
self.path_info = path_info
+ self.custom_predicates = custom_predicates
def __call__(self, wrapped):
setting = self.__dict__.copy()