summaryrefslogtreecommitdiff
path: root/repoze/bfg/configuration.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2010-09-08 04:25:35 +0000
committerChris McDonough <chrism@agendaless.com>2010-09-08 04:25:35 +0000
commit74409d12f7eb085bc992a200cc74799e4d1ff355 (patch)
tree14b10948171be45b425f87122be156a7dc11c117 /repoze/bfg/configuration.py
parent68469214646debcdcea662f34b41f41e0ae8db12 (diff)
downloadpyramid-74409d12f7eb085bc992a200cc74799e4d1ff355.tar.gz
pyramid-74409d12f7eb085bc992a200cc74799e4d1ff355.tar.bz2
pyramid-74409d12f7eb085bc992a200cc74799e4d1ff355.zip
- The ``repoze.bfg.urldispatch.Route`` constructor (not an API) now
accepts a different ordering of arguments. Previously it was ``(pattern, name, factory=None, predicates=())``. It is now ``(name, pattern, factory=None, predicates=())``. This is in support of consistency with ``configurator.add_route``. - The ``repoze.bfg.urldispatch.RoutesMapper.connect`` method (not an API) now accepts a different ordering of arguments. Previously it was ``(pattern, name, factory=None, predicates=())``. It is now ``(name, pattern, factory=None, predicates=())``. This is in support of consistency with ``configurator.add_route``. - The ``repoze.bfg.urldispatch.RoutesMapper`` object now has a ``get_route`` method which returns a single Route object or ``None``. - A new interface ``repoze.bfg.interfaces.IRoute`` was added. The ``repoze.bfg.urldispatch.Route`` object implements this interface. - The canonical attribute for accessing the routing pattern from a route object is now ``pattern`` rather than ``path``. - The argument to ``repoze.bfg.configuration.Configurator.add_route`` which was previously called ``path`` is now called ``pattern`` for better explicability. For backwards compatibility purposes, passing a keyword argument named ``path`` to ``add_route`` will still work indefinitely. - The ``path`` attribute to the ZCML ``route`` directive is now named ``pattern`` for better explicability. The older ``path`` attribute will continue to work indefinitely. - All narrative, API, and tutorial docs which referred to a route pattern as a ``path`` have now been updated to refer to them as a ``pattern``. - The routesalchemy template has been updated to use ``pattern`` in its route declarations rather than ``path``.
Diffstat (limited to 'repoze/bfg/configuration.py')
-rw-r--r--repoze/bfg/configuration.py42
1 files changed, 28 insertions, 14 deletions
diff --git a/repoze/bfg/configuration.py b/repoze/bfg/configuration.py
index 488761ec4..962ba8f25 100644
--- a/repoze/bfg/configuration.py
+++ b/repoze/bfg/configuration.py
@@ -1005,7 +1005,7 @@ class Configurator(object):
def add_route(self,
name,
- path,
+ pattern=None,
view=None,
view_for=None,
permission=None,
@@ -1025,6 +1025,7 @@ class Configurator(object):
view_context=None,
view_attr=None,
use_global_views=False,
+ path=None,
_info=u''):
""" Add a :term:`route configuration` to the current
configuration state, as well as possibly a :term:`view
@@ -1064,7 +1065,7 @@ class Configurator(object):
route).
The syntax of the ``traverse`` argument is the same as it is
- for ``path``. For example, if the ``path`` provided to
+ for ``pattern``. For example, if the ``pattern`` provided to
``add_route`` is ``articles/:article/edit``, and the
``traverse`` argument provided to ``add_route`` is
``/:article``, when a request comes in that causes the route
@@ -1078,14 +1079,15 @@ class Configurator(object):
traversal.
If the traversal path contains segment marker names which
- are not present in the path argument, a runtime error will
- occur. The ``traverse`` pattern should not contain segment
- markers that do not exist in the ``path``.
+ are not present in the ``pattern`` argument, a runtime error
+ will occur. The ``traverse`` pattern should not contain
+ segment markers that do not exist in the ``pattern``
+ argument.
A similar combining of routing and traversal is available
when a route is matched which contains a ``*traverse``
- remainder marker in its path (see
- :ref:`using_traverse_in_a_route_path`). The ``traverse``
+ remainder marker in its pattern (see
+ :ref:`using_traverse_in_a_route_pattern`). The ``traverse``
argument to add_route allows you to associate route patterns
with an arbitrary traversal path without using a a
``*traverse`` remainder marker; instead you can use other
@@ -1093,18 +1095,26 @@ class Configurator(object):
Note that the ``traverse`` argument to ``add_route`` is
ignored when attached to a route that has a ``*traverse``
- remainder marker in its path.
+ remainder marker in its pattern.
.. note:: This feature is new as of :mod:`repoze.bfg` 1.3.
Predicate Arguments
- path
+ pattern
- The path of the route e.g. ``ideas/:idea``. This argument
- is required. See :ref:`route_path_pattern_syntax` for
- information about the syntax of route paths. If the path
- doesn't match the current URL, route matching continues.
+ The pattern of the route e.g. ``ideas/:idea``. This
+ argument is required. See :ref:`route_path_pattern_syntax`
+ for information about the syntax of route patterns. If the
+ pattern doesn't match the current URL, route matching
+ continues.
+
+ .. note:: For backwards compatibility purposes (as of
+ :mod:`repoze.bfg` 1.3), a ``path`` keyword argument
+ passed to this function will be used to represent the
+ pattern value if the ``pattern`` argument is ``None``.
+ If both ``path`` and ``pattern`` are passed, ``pattern``
+ wins.
xhr
@@ -1333,7 +1343,11 @@ class Configurator(object):
mapper = RoutesMapper()
self.registry.registerUtility(mapper, IRoutesMapper)
factory = self.maybe_dotted(factory)
- return mapper.connect(path, name, factory, predicates=predicates)
+ if pattern is None:
+ pattern = path
+ if pattern is None:
+ raise ConfigurationError('"pattern" argument may not be None')
+ return mapper.connect(name, pattern, factory, predicates=predicates)
def scan(self, package=None, categories=None, _info=u''):
""" Scan a Python package and any of its subpackages for