diff options
Diffstat (limited to 'CHANGES.txt')
| -rw-r--r-- | CHANGES.txt | 65 |
1 files changed, 42 insertions, 23 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index 54623ddd2..2e96421ee 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,32 +1,52 @@ +next release +============ + +Features +-------- + +- ``ACLAuthorizationPolicy`` supports ``__acl__`` as a callable. This + removes the ambiguity between the potential ``AttributeError`` that would + be raised on the ``context`` when the property was not defined and the + ``AttributeError`` that could be raised from any user-defined code within + a dynamic property. It is recommended to define a dynamic ACL as a callable + to avoid this ambiguity. See https://github.com/Pylons/pyramid/issues/735. + Bug Fixes --------- -- Now predicate mismatches don't hide valid views. This is mostly an - issue with views that use request_method predicates. Here's an - example that now works:: +- View lookup will now search for valid views based on the inheritance + hierarchy of the context. It tries to find views based on the most + specific context first, and upon predicate failure, will move up the + inheritance chain to test views found by the super-type of the context. + In the past, only the most specific type containing views would be checked + and if no matching view could be found then a PredicateMismatch would be + raised. Now predicate mismatches don't hide valid views registered on + super-types. Here's an example that now works:: + + .. code-block:: python - class IResource(Interface): - ... + class IResource(Interface): + ... - @view_config(context=IResource) - def get(context, request): - ... + @view_config(context=IResource) + def get(context, request): + ... - @view_config(context=IResource, request_method='POST') - def post(context, request): - ... + @view_config(context=IResource, request_method='POST') + def post(context, request): + ... - @view_config(context=IResource, request_method='DELETE') - def delete(context, request): - ... + @view_config(context=IResource, request_method='DELETE') + def delete(context, request): + ... - @implementor(IResource) - class MyResource: - ... + @implementor(IResource) + class MyResource: + ... - @view_config(context=MyResource, request_method='POST') - def override_post(context, request): - ... + @view_config(context=MyResource, request_method='POST') + def override_post(context, request): + ... Previously the override_post view registration would hide the get and delete views in the context of MyResource -- leading to a @@ -34,7 +54,6 @@ Bug Fixes methods. Now the views are found and no predicate mismatch is raised. - 1.4 (2012-12-18) ================ @@ -311,7 +330,7 @@ Bug Fixes - ``pyramid.view.render_view`` was not functioning properly under Python 3.x due to a byte/unicode discrepancy. See - http://github.com/Pylons/pyramid/issues/721 + https://github.com/Pylons/pyramid/issues/721 Deprecations ------------ @@ -548,7 +567,7 @@ Features - The static view machinery now raises (rather than returns) ``HTTPNotFound`` and ``HTTPMovedPermanently`` exceptions, so these can be caught by the - NotFound view (and other exception views). + Not Found View (and other exception views). - The Mako renderer now supports a def name in an asset spec. When the def name is present in the asset spec, the system will render the template def |
