summaryrefslogtreecommitdiff
path: root/CHANGES.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CHANGES.txt')
-rw-r--r--CHANGES.txt65
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