summaryrefslogtreecommitdiff
path: root/docs
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 /docs
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 'docs')
-rw-r--r--docs/designdefense.rst26
1 files changed, 21 insertions, 5 deletions
diff --git a/docs/designdefense.rst b/docs/designdefense.rst
index 7260ec1ce..ea5a072f8 100644
--- a/docs/designdefense.rst
+++ b/docs/designdefense.rst
@@ -404,11 +404,27 @@ request method was ``POST`` and that the remote user agent passed
For more information about predicates, see
:ref:`view_predicates_in_1dot1` and :ref:`route_predicates_in_1dot1`.
-Many "prebaked" predicates exist. Use of only "prebaked" predicates,
-however, doesn't entirely meet Ian's criterion. He would like to be
-able to match a request using a lambda or another function which
-interrogates the request imperatively. This may become a feature in a
-later release.
+Many "prebaked" predicates exist. However, use of only "prebaked"
+predicates, however, doesn't entirely meet Ian's criterion. He would
+like to be able to match a request using a lambda or another function
+which interrogates the request imperatively. In 1.2, we acommodate
+this by allowing people to define "custom" view predicates:
+
+.. code-block:: python
+ :linenos:
+
+ from repoze.bfg.view import bfg_view
+ from webob import Response
+
+ def subpath(context, request):
+ return request.subpath and request.subpath[0] == 'abc'
+
+ @bfg_view(custom_predicates=(subpath,)))
+ def aview(request):
+ return Response('OK')
+
+The above view will only match when the first element of the request's
+:term:`subpath` is ``abc``.
.. _zcml_encouragement: