Chris McDonough
2012-02-17 c51896756eeffc7e8c50ad71300ec355ae47465a
refs
author Chris McDonough <chrism@plope.com>
Friday, February 17, 2012 07:08 +0100
committer Chris McDonough <chrism@plope.com>
Friday, February 17, 2012 07:08 +0100
commitc51896756eeffc7e8c50ad71300ec355ae47465a
tree c988f5d6cd7d2798b20935c7e614441efac89bf8 tree | zip | gz
parent b2ea4c88b8b3bc9ed657160d8a888780d6c41844 view | diff
Features
--------

- Add ``pyramid.config.Configurator.add_resource_url_adapter`` API method.
See the Hooks narrative documentation section entitled "Changing How
pyramid.request.Request.resource_url Generates a URL" for more information.
This is not a new feature, it just provides an API for adding a resource
url adapter without needing to use the ZCA API.

- A new interface was added: ``pyramid.interfaces.IResourceURL``. An adapter
implementing its interface can be used to override resource URL generation
when ``request.resource_url`` is called. This interface replaces the
now-deprecated ``pyramid.interfaces.IContextURL`` interface.

- The dictionary passed to a resource's ``__resource_url__`` method (see
"Overriding Resource URL Generation" in the "Resources" chapter) now
contains an ``app_url`` key, representing the application URL generated
during ``request.resource_url``. It represents a potentially customized
URL prefix, containing potentially custom scheme, host and port information
passed by the user to ``request.resource_url``. It should be used instead
of ``request.application_url`` where necessary.

- The ``request.resource_url`` API now accepts these arguments: ``app_url``,
``scheme``, ``host``, and ``port``. The app_url argument can be used to
replace the URL prefix wholesale during url generation. The ``scheme``,
``host``, and ``port`` arguments can be used to replace the respective
default values of ``request.application_url`` partially.

- A new API named ``request.resource_path`` now exists. It works like
``request.resource_url`` but produces a relative URL rather than an
absolute one.

- The ``request.route_url`` API now accepts these arguments: ``_app_url``,
``_scheme``, ``_host``, and ``_port``. The ``_app_url`` argument can be
used to replace the URL prefix wholesale during url generation. The
``_scheme``, ``_host``, and ``_port`` arguments can be used to replace the
respective default values of ``request.application_url`` partially.

Backwards Incompatibilities
---------------------------

- The ``pyramid.interfaces.IContextURL`` interface has been deprecated.
People have been instructed to use this to register a resource url adapter
in the "Hooks" chapter to use to influence ``request.resource_url`` URL
generation for resources found via custom traversers since Pyramid 1.0.

The interface still exists and registering such an adapter still works, but
this interface will be removed from the software after a few major Pyramid
releases. You should replace it with an equivalent
``pyramid.interfaces.IResourceURL`` adapter, registered using the new
``pyramid.config.Configurator.add_resource_url_adapter`` API. A
deprecation warning is now emitted when a
``pyramid.interfaces.IContextURL`` adapter is found when
``request.resource_url`` is called.

Misc
----

- Change ``set_traverser`` API name to ``add_traverser``.

Ref #438.
13 files modified
1065 ■■■■ changed files
CHANGES.txt 54 ●●●●● diff | view | raw | blame | history
docs/api/config.rst 2 ●●● diff | view | raw | blame | history
docs/api/interfaces.rst 4 ●●●● diff | view | raw | blame | history
docs/api/request.rst 2 ●●●●● diff | view | raw | blame | history
docs/narr/hooks.rst 59 ●●●● diff | view | raw | blame | history
docs/whatsnew-1.3.rst 56 ●●●●● diff | view | raw | blame | history
pyramid/config/factories.py 77 ●●●●● diff | view | raw | blame | history
pyramid/interfaces.py 43 ●●●●● diff | view | raw | blame | history
pyramid/tests/test_config/test_factories.py 86 ●●●●● diff | view | raw | blame | history
pyramid/tests/test_request.py 25 ●●●●● diff | view | raw | blame | history
pyramid/tests/test_url.py 365 ●●●●● diff | view | raw | blame | history
pyramid/traversal.py 66 ●●●● diff | view | raw | blame | history
pyramid/url.py 226 ●●●●● diff | view | raw | blame | history