summaryrefslogtreecommitdiff
path: root/docs/narr/urldispatch.rst
AgeCommit message (Collapse)Author
2010-12-02Merge https://github.com/Pylons/pyramidCasey Duncan
2010-12-01fix bad info in urldispatch chapter: matchdict and matched_route will be NoneChris McDonough
2010-11-30Merge https://github.com/Pylons/pyramidCasey Duncan
2010-11-28Normalized narrative doc, code with linenos while text+bash don'tBlaise Laflamme
2010-11-28Narrative doc cleanupBlaise Laflamme
2010-11-27Merge https://github.com/Pylons/pyramidCasey Duncan
2010-11-23fix quotingChris McDonough
2010-11-22Move however to contrasting sentenceCasey Duncan
2010-11-22Be consistent with the spelling of 'slash-appending not found view', Change ↵Casey Duncan
paragraph about losing POST data on redirect to a warning
2010-11-22reword paragraph explaining append_slash_notfound_view for clarityCasey Duncan
2010-11-21commafy and dehyphenatei, add word 'documented'Casey Duncan
2010-11-21fix typoCasey Duncan
2010-11-21Break sentence in leiu of semicolon spliceCasey Duncan
2010-11-21fix typoCasey Duncan
2010-11-21fix lingering old-style replacement marker syntaxCasey Duncan
2010-11-21clarify sentence about nonsensical replacement markersCasey Duncan
2010-11-21fix lingering old-style replacement marker syntaxCasey Duncan
2010-11-21notate literal period in text for clarityCasey Duncan
2010-11-21reword/simplify 'URL dispatch supplies a shortcut' paragraphCasey Duncan
2010-11-19make previous version route example match current exampleCasey Duncan
2010-11-19example of previous route marker should use old marker syntax (:, not {})Casey Duncan
2010-11-18There is no pattern_regexes.Ben Bangert
2010-11-18More colon references.Ben Bangert
2010-11-18Ensure the version changed info is visible.Ben Bangert
2010-11-18- URL Dispatch now uses the form ``{marker}`` to denote a replace marker inBen Bangert
the route pattern instead of ``:marker``. The old syntax is still backwards compatible and accepted. The new format allows a regular expression for that marker location to be used instead of the default ``[^/]+``, for example ``{marker:\d+}`` is now valid to require the marker to be digits.
2010-11-18- URL Dispatch now allows for replacement markers to be located anywhereBen Bangert
in the pattern, instead of immediately following a ``/``. - Added ``marker_pattern`` option to ``add_route`` to supply a dict of regular expressions to be used for markers in the pattern instead of the default regular expression that matched everything except a ``/``.
2010-11-10- New API methods for ``pyramid.request.Request``: ``model_url`` andChris McDonough
``route_url``. These are simple passthroughs for their respective functions in ``pyramid.url``. - Documented the ``matchdict`` and ``matched_route`` attributes of the request object in the Request API documentation.
2010-11-09remove unnecessary wordingChris McDonough
2010-11-09- All references to Pyramid-the-application were changed from :mod:`pyramid`Chris McDonough
to :app:`Pyramid`. A custom role setting was added to ``docs/conf.py`` to allow for this. (internal)
2010-11-04fix urldispatch code blocks (syntax and rendering)Chris McDonough
2010-11-04repoze->pyramidChris McDonough
2010-11-04fix a typoChris McDonough
2010-11-04typoChris McDonough
2010-11-03de-zcml-ify various chapters and move ZCML to the declarative chapterChris McDonough
2010-11-02- Remove references to 'WebOb' Response and just call it 'Response', and noteChris McDonough
that it is imported from pyramid. API docs can mention its inheritance from webob (aka "Provide a webob.Response class facade for forward compat").
2010-10-25convert narrative docs to PyramidChris McDonough
2010-10-14updateChris McDonough
2010-09-14prep for 1.3a13Chris McDonough
2010-09-08Use a class role for linkage.Chris McDonough
2010-09-08- The ``repoze.bfg.interfaces`` API documentation page is now renderedChris McDonough
via ``repoze.sphinx.autointerface``. - The URL Dispatch narrative chapter now refers to the ``interfaces`` chapter to explain the API of an ``IRoute`` object. - ``tests_require`` now includes ``repoze.sphinx.autointerface`` as a dependency.
2010-09-08- The ``repoze.bfg.urldispatch.Route`` constructor (not an API) nowChris McDonough
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``.
2010-09-06renderingsChris McDonough
2010-09-05- Each of the follow methods of the Configurator now allow theChris McDonough
below-named arguments to be passed as "dotted name strings" (e.g. "foo.bar.baz") rather than as actual implementation objects that must be imported: setup_registry root_factory, authentication_policy, authorization_policy, debug_logger, locale_negotiator, request_factory, renderer_globals_factory add_subscriber subscriber, iface derive_view view add_view view, for_, context, request_type, containment add_route() view, view_for, factory, for_, view_context scan package add_renderer factory set_forbidden_view view set_notfound_view view set_request_factory factory set_renderer_globals_factory() factory set_locale_negotiator negotiator testing_add_subscriber event_iface
2010-08-09renderingChris McDonough
2010-08-08- New public interface: ``repoze.bfg.exceptions.IExceptionResponse``.Chris McDonough
This interface is provided by all internal exception classes (such as ``repoze.bfg.exceptions.NotFound`` and ``repoze.bfg.exceptions.Forbidden``), instances of which are both exception objects and can behave as WSGI response objects. This interface is made public so that exception classes which are also valid WSGI response factories can be configured to implement them or exception instances which are also or response instances can be configured to provide them. - New API class: ``repoze.bfg.view.AppendSlashNotFoundViewFactory`` (undoes previous custom_notfound_view on request passsed to append_slash_notfound_view). - Previously, two default view functions were registered at Configurator setup (one for ``repoze.bfg.exceptions.NotFound`` named ``default_notfound_view`` and one for ``repoze.bfg.exceptions.Forbidden`` named ``default_forbidden_view``) to render internal exception responses. Those default view functions have been removed, replaced with a generic default view function which is registered at Configurator setup for the ``repoze.bfg.interfaces.IExceptionResponse`` interface that simply returns the exception instance; the ``NotFound` and ``Forbidden`` classes are now still exception factories but they are also response factories which generate instances that implement the new ``repoze.bfg.interfaces.IExceptionResponse`` interface.
2010-08-07FeaturesChris McDonough
-------- - There can only be one Not Found view in any ``repoze.bfg`` application. If you use ``repoze.bfg.view.append_slash_notfound_view`` as the Not Found view, it still must generate a NotFound response when it cannot redirect to a slash-appended URL; this not found response will be visible to site users. As of this release, if you wish to use a custom notfound view callable when ``append_slash_notfound_view`` does not redirect to a slash-appended URL, use a wrapper function as the ``repoze.bfg.exceptions.NotFound`` view; have this wrapper attach a view callable which returns a response to the request object named ``custom_notfound_view`` before calling ``append_slash_notfound_view``. For example:: from webob.exc import HTTPNotFound from repoze.bfg.exceptions import NotFound from repoze.bfg.view import append_slash_notfound_view def notfound_view(exc, request): def fallback_notfound_view(exc, request): return HTTPNotFound('It aint there, stop trying!') request.fallback_notfound_view = fallback_notfound_view return append_slash_notfound_view(exc, request) config.add_view(notfound_view, context=NotFound) ``custom_notfound_view`` must adhere to the two-argument view callable calling convention of ``(context, request)`` (``context`` will be the exception object). If ``custom_notfound_view`` is not found on the request object, a default notfound response will be generated when the ``append_slash_notfound_view`` doesn't redirect to a slash-appended URL. Documentation -------------- - Expanded the "Cleaning Up After a Request" section of the URL Dispatch narrative chapter. - Expanded the "Redirecting to Slash-Appended Routes" section of the URL Dispatch narrative chapter.
2010-07-30document nonempty segment ruleChris McDonough
2010-07-30cmChris McDonough
2010-07-23- New argument to ``repoze.bfg.configuration.Configurator.add_route``Chris McDonough
and the ``route`` ZCML directive: ``traverse``. If you would like to cause the ``context`` to be something other than the ``root`` object when this route matches, you can spell a traversal pattern as the ``traverse`` argument. This traversal pattern will be used as the traversal path: traversal will begin at the root object implied by this route (either the global root, or the object returned by the ``factory`` associated with this route). The syntax of the ``traverse`` argument is the same as it is for ``path``. For example, if the ``path`` provided is ``articles/:article/edit``, and the ``traverse`` argument provided is ``/:article``, when a request comes in that causes the route to match in such a way that the ``article`` match value is '1' (when the request URI is ``/articles/1/edit``), the traversal path will be generated as ``/1``. This means that the root object's ``__getitem__`` will be called with the name ``1`` during the traversal phase. If the ``1`` object exists, it will become the ``context`` of the request. The Traversal narrative has more information about 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``. A similar combining of routing and traversal is available when a route is matched which contains a ``*traverse`` remainder marker in its path. The ``traverse`` argument allows you to associate route patterns with an arbitrary traversal path without using a a ``*traverse`` remainder marker; instead you can use other match information. Note that the ``traverse`` argument is ignored when attached to a route that has a ``*traverse`` remainder marker in its path.
2010-06-30more documentation fallout from allowing predicates access to route matching ↵Chris McDonough
information