summaryrefslogtreecommitdiff
path: root/CHANGES.txt
AgeCommit message (Collapse)Author
2009-01-27Prep for 0.6.7.Chris McDonough
2009-01-27FeaturesChris McDonough
-------- - The ``repoze.bfg.url.model_url`` API now works against contexts derived from Routes URL dispatch (``Routes.util.url_for`` is called under the hood). - "Virtual root" support for traversal-based applications has been added. Virtual root support is useful when you'd like to host some model in a :mod:`repoze.bfg` model graph as an application under a URL pathname that does not include the model path itself. For more information, see the (new) "Virtual Hosting" chapter in the documentation. - A ``repoze.bfg.traversal.virtual_root`` API has been added. When called, it returns the virtual root object (or the physical root object if no virtual root has been specified). Implementation Changes ---------------------- - ``repoze.bfg.traversal.RoutesModelTraverser`` has been moved to ``repoze.bfg.urldispatch``. - ``model_url`` URL generation is now performed via an adapter lookup based on the context and the request. - ZCML which registers two adapters for the ``IContextURL`` interface has been added to the configure.zcml in ``repoze.bfg.includes``.
2009-01-27Prep for 0.6.6.Chris McDonough
2009-01-27- There is an indirection in ``repoze.bfg.url.model_url`` now thatChris McDonough
consults a utility to generate the base model url (without extra elements or a query string). Eventually this will service virtual hosting; for now it's undocumented and should not be hooked.
2009-01-26Prep for 0.6.5.Chris McDonough
2009-01-26- Added a ``traversal_path`` API to the traversal module; see theChris McDonough
"traversal" API chapter in the docs. This was a function previously known as ``split_path`` that was not an API but people were using it anyway. Unlike ``split_path`` it now returns a tuple instead of a list (as its values are cached).
2009-01-25- The ``repoze.bfg.urldispatch.RoutesRootFactory`` now injects theChris McDonough
``wsgiorg.routing_args`` environment variable into the environ when a route matches. This is a tuple of ((), routing_args) where routing_args is the value that comes back from the routes mapper match (the "match dict"). - The ``repoze.bfg.traversal.RoutesModelTraverser`` class now wants to obtain the ``view_name`` and ``subpath`` from the ``wsgiorgs.routing_args`` environment variable. It falls back to obtaining these from the context for backwards compatibility.
2009-01-25(no commit message)Chris McDonough
2009-01-25- It is no longer permissible for a security ACE to contain a "nested"Chris McDonough
list of permissions (e.g. ``(Allow, Everyone, ['read', ['view', ['write', 'manage']]])`)`. The list must instead be fully expanded (e.g. ``(Allow, Everyone, ['read', 'view', 'write', 'manage])``). This feature was never documented, and was never an API, so it's not a backwards incompatibility.
2009-01-25- Get rid of ``repoze.bfg.security.ACLAuthorizer``: theChris McDonough
``ACLSecurityPolicy`` now does what it did inline. - Get rid of ``repoze.bfg.interfaces.NoAuthorizationInformation`` exception: it was used only by ``ACLAuthorizer``.
2009-01-25- It is no longer permissible to pass a "nested" list of principals toChris McDonough
``repoze.bfg.ACLAuthorizer.permits`` (e.g. ['fred', ['larry', 'bob']). The principals list must be fully expanded. This feature was never documented, and was never an API, so it's not a backwards incompatibility.
2009-01-25- You can now override the NotFound and Unauthorized responses thatChris McDonough
:mod:`repoze.bfg` generates when a view cannot be found or cannot be invoked due to lack of permission. See the "ZCML Hooks" chapter in the docs for more information. - Use a homegrown Unauthorized error instead of ``webob.exc.Unauthorized`` (the latter is slow). - Various speed micro-tweaks.
2009-01-24- Use a homegrown NotFound error instead of ``webob.HTTPNotFound``Chris McDonough
(the latter is slow).
2009-01-24Behavior ChangesChris McDonough
---------------- - The ``repoze.bfg.view.render_view_to_response`` API will no longer raise a ValueError if an object returned by a view function it calls does not possess certain attributes (``headerlist``, ``app_iter``, ``status``). This API used to attempt to perform a check using the ``is_response`` function in ``repoze.bfg.view``, and raised a ``ValueError`` if the ``is_response`` check failed. The responsibility is now the caller's to ensure that the return value from a view function is a "real" response. - WSGI environ dicts passed to ``repoze.bfg`` 's Router must now contain a REQUEST_METHOD key/value; if they do not, a KeyError will be raised (speed). Implementation Changes ---------------------- - Various speed micro-tweaks.
2009-01-24- ``repoze.bfg.testing.DummyModel`` did not have a ``get`` method;Chris McDonough
it now does.
2009-01-23Prep for 0.6.4.Chris McDonough
2009-01-22- ``repoze.bfg.traversal.split_path`` now also handles decodingChris McDonough
path segments to unicode (for speed, because its results are LRU cached). - ``repoze.bfg.traversal.step`` was made a method of the ModelGraphTraverser.
2009-01-22- The ``unicode_path_segments`` configuration variable and theChris McDonough
``BFG_UNICODE_PATH_SEGMENTS`` configuration variable have been removed. Path segments are now always passed to model ``__getitem__`` methods as unicode. "True" has been the default for this setting since 0.5.4, but changing this configuration setting to false allowed you to go back to passing raw path element strings to model ``__getitem__`` methods. This services a speed goal (we get about +80 req/s by removing the check), and it's clearer just to always expect unicode path segments in model ``__getitem__`` methods.
2009-01-22Coverage.Chris McDonough
2009-01-22- The Allowed and Denied classes in ``repoze.bfg.security`` now areChris McDonough
lazier about constructing the representation of a reason message for speed; ``repoze.bfg.view_execution_permitted`` takes advantage of this. - The ``is_response`` check was sped up by about half at the expense of making its code slightly uglier.
2009-01-22 If no subscribers are registered via ``registerHandler`` orChris McDonough
``registerSubscriptionAdapter``, ``notify`` is a noop for speed.
2009-01-20- Tease out an extra 4% performance boost by changing the Router;Chris McDonough
instead of using imported ZCA APIs, use the same APIs directly against the registry that is an attribute of the Router. As a result, the registry used by BFG is now a subclass of ``zope.component.registry.Components`` (defined as ``repoze.bfg.registry.Registry``); it has a ``notify`` method.
2009-01-20(no commit message)Chris McDonough
2009-01-20(no commit message)Chris McDonough
2009-01-20Test buildbot.Chris McDonough
2009-01-19Prep for 0.6.3.Chris McDonough
2009-01-19scan, not grok.Chris McDonough
2009-01-18Merge "routesmapper branch" to trunk.Chris McDonough
2009-01-17- Added a "Using ZPT Macros in repoze.bfg" section to the narrativeChris McDonough
templating chapter.
2009-01-17(no commit message)Chris McDonough
2009-01-17Note changes.Chris McDonough
2009-01-16- Add a section on "Using BFG Security With URL Dispatch" into theChris McDonough
urldispatch chapter of the documentation. Clean up "BFG" vernacular (replace with repoze.bfg).
2009-01-16(no commit message)Chris McDonough
2009-01-16Note the readdition of ``root_policy``.Chris McDonough
2009-01-16Typo.Chris McDonough
2009-01-16- The ``repoze.bfg.view.static`` helper now usesChris McDonough
``webob.Request.get_response`` to do its work rather than relying on howgrown WSGI code.
2009-01-16FeaturesChris McDonough
-------- - The functionality of ``repoze.bfg.convention`` has been merged into the core. Applications which make use of ``repoze.bfg.convention`` will continue to work indefinitely, but it is recommended that apps stop depending upon it. To do so, substitute imports of ``repoze.bfg.convention.bfg_view`` with imports of ``repoze.bfg.view.bfg_view``, and change the stanza in ZCML from ``<convention package=".">`` to ``<grok package=".">``. As a result of the merge, bfg has grown a new dependency: ``martian``. - View functions which use the pushpage decorator are now pickleable (meaning their use won't prevent a ``configure.zcml.cache`` file from being written to disk). Implementation Changes ---------------------- - The ``wsgiapp`` decorator now uses ``webob.Request.get_response`` to do its work rather than relying on howgrown WSGI code.
2009-01-15- Instead of invariably using ``webob.Request`` as the "requestChris McDonough
factory" (e.g. in the ``Router`` class) and ``webob.Response`` and the "response factory" (e.g. in ``render_template_to_response``), allow both to be overridden via a ZCML utility hook. See the "Using ZCML Hooks" chapter of the documentation for more information.
2009-01-13Prep for 0.6.2.Chris McDonough
2009-01-12- An interface specific to the HTTP verb (GET/PUT/POST/DELETE/HEAD) isChris McDonough
attached to each request object on ingress. The HTTP-verb-related interfaces are defined in ``repoze.bfg.interfaces`` and are ``IGETRequest``, ``IPOSTRequest``, ``IPUTRequest``, ``IDELETERequest`` and ``IHEADRequest``. These interfaces can be specified as the ``request_type`` attribute of a bfg view declaration. A view naming a specific HTTP-verb-matching interface will be found only if the view is defined with a request_type that matches the HTTP verb in the incoming request. The more general ``IRequest`` interface can be used as the request_type to catch all requests (and this is indeed the default). All requests implement ``IRequest``. The HTTP-verb-matching idea was pioneered by `repoze.bfg.restrequest <http://pypi.python.org/pypi/repoze.bfg.restrequest/1.0.1>`_ . That package is no longer required, but still functions fine.
2009-01-12- Make the (internal) thread local registry manager maintain a stackChris McDonough
of registries in order to make it possible to call one BFG application from inside another.
2009-01-11Tweaks.Chris McDonough
2009-01-11- Improve test coverage.Chris McDonough
- Remove old cold which attempts to recover from trying to unpickle a ``z3c.pt`` template; Chameleon has been the templating engine for a good long time now. Running repoze.bfg against a sandbox that has pickled ``z3c.pt`` templates it will now just fail with an unpickling error, but can be fixed by deleting the template cache files.
2009-01-11Note template name.Chris McDonough
2009-01-11Clean up.Chris McDonough
2009-01-11Merge router-simplify branch. Changelog below.Chris McDonough
Bug Fixes --------- - Fix a bug where the Paste configuration's ``unicode_path_segments`` (and os.environ's ``BFG_UNICODE_PATH_SEGMENTS``) may have been defaulting to false in some circumstances. It now always defaults to true, matching the documentation and intent. - The ``repoze.bfg.traversal.find_model`` API did not work properly when passed a ``path`` argument which was unicode and contained high-order bytes when the ``unicode_path_segments`` or ``BFG_UNICODE_PATH_SEGMENTS`` configuration variables were "true". - A new module was added: ``repoze.bfg.settings``. This contains deployment-settings-related code. Behavior Changes ---------------- - The ``make_app`` callable within ``repoze.bfg.router`` now registers the ``root_policy`` argument as a utility (unnamed, using the new ``repoze.bfg.interfaces.IRootFactory`` as a provides interface) rather than passing it as the first argument to the ``repoze.bfg.router.Router`` class. As a result the ``repoze.bfg.router.Router`` router class only accepts a single argument: ``registry``. The ``repoze.bfg.router.Router`` class retrieves the root policy via a utility lookup now. The ``repoze.bfg.router.make_app`` API also now performs some important application registrations that were previously handled inside ``repoze.bfg.registry.makeRegistry``. - The ``repoze.bfg.settings.Settings`` class (an instance of which is registered as a utility providing ``repoze.bfg.interfaces.ISettings`` when any application is started) now automatically calls ``repoze.bfg.settings.get_options`` on the options passed to its constructor. This means that usage of ``get_options`` within an application's ``make_app`` function is no longer required (the "raw" ``options`` dict or None may be passed). Deprecations ------------ - Moved the ``repoze.bfg.registry.Settings`` class. This has been moved to ``repoze.bfg.settings.Settings``. A deprecation warning is issued when it is imported from the older location. - Moved the ``repoze.bfg.registry.get_options`` function This has been moved to ``repoze.bfg.settings.get_options``. A deprecation warning is issued when it is imported from the older location. - The ``repoze.bfg.interfaces.IRootPolicy`` interface was renamed within the interfaces package. It has been renamed to ``IRootFactory``. A deprecation warning is issued when it is imported from the older location.
2009-01-07(no commit message)Tres Seaver
2009-01-07- Add a method named ``assert_`` to the DummyTemplateRenderer. ThisChris McDonough
method accepts keyword arguments. Each key/value pair in the keyword arguments causes an assertion to be made that the renderer received this key with a value equal to the asserted value. - Projects generated by the paster templates now use the ``DummyTemplateRenderer.assert_`` method in their view tests.
2009-01-07Duelling commits! (already noted above)Chris McDonough
2009-01-06Note extended return value from get_options.Tres Seaver