Log message for revision 113900: Merged r113898:113899 from 2.12 branch
Changed: U Zope/trunk/doc/CHANGES.rst U Zope/trunk/src/Products/Five/browser/meta.zcml U Zope/trunk/src/Products/Five/browser/metaconfigure.py -=- Modified: Zope/trunk/doc/CHANGES.rst =================================================================== --- Zope/trunk/doc/CHANGES.rst 2010-06-26 16:08:46 UTC (rev 113899) +++ Zope/trunk/doc/CHANGES.rst 2010-06-26 16:09:37 UTC (rev 113900) @@ -11,6 +11,9 @@ Bugs Fixed ++++++++++ +- LP #578326: Issue a warning if someone specifies a non-public permission + attribute in the browser:view directive. This attribute has never been + supported in Zope 2. Features Added ++++++++++++++ Modified: Zope/trunk/src/Products/Five/browser/meta.zcml =================================================================== --- Zope/trunk/src/Products/Five/browser/meta.zcml 2010-06-26 16:08:46 UTC (rev 113899) +++ Zope/trunk/src/Products/Five/browser/meta.zcml 2010-06-26 16:09:37 UTC (rev 113900) @@ -42,7 +42,7 @@ <meta:complexDirective name="view" - schema="zope.browserpage.metadirectives.IViewDirective" + schema=".metaconfigure.IFiveViewDirective" handler=".metaconfigure.view" > Modified: Zope/trunk/src/Products/Five/browser/metaconfigure.py =================================================================== --- Zope/trunk/src/Products/Five/browser/metaconfigure.py 2010-06-26 16:08:46 UTC (rev 113899) +++ Zope/trunk/src/Products/Five/browser/metaconfigure.py 2010-06-26 16:09:37 UTC (rev 113900) @@ -20,6 +20,7 @@ """ import os from inspect import ismethod +import warnings from zope import component from zope.interface import implements @@ -31,11 +32,13 @@ from zope.publisher.interfaces.browser import IDefaultBrowserLayer from zope.publisher.interfaces.browser import IBrowserPublisher from zope.publisher.interfaces.browser import IBrowserRequest +from zope.security.zcml import Permission import zope.browserpage.metaconfigure from zope.browserpage.metaconfigure import providesCallable from zope.browserpage.metaconfigure import _handle_menu from zope.browserpage.metaconfigure import _handle_for +from zope.browserpage.metadirectives import IViewDirective from AccessControl.class_init import InitializeClass from AccessControl.security import getSecurityInfo @@ -178,8 +181,42 @@ # view (named view with pages) +class IFiveViewDirective(IViewDirective): + + permission = Permission( + title=u"Permission", + description=u"The permission needed to use the view.", + required=False, + ) + + class view(zope.browserpage.metaconfigure.view): + # Let the permission default to zope.Public and not be required + # We should support this, as more users are expecting it to work. + def __init__(self, _context, permission=None, for_=Interface, + name='', layer=IDefaultBrowserLayer, class_=None, + allowed_interface=None, allowed_attributes=None, + menu=None, title=None, provides=Interface, + ): + if permission is None: + permission = 'zope.Public' + elif permission in ('zope.Public', 'zope2.Public'): + # No need to warn about the default case + pass + else: + warnings.warn("The permission option of the <browser:view /> " + "directive is not supported in Zope 2. " + \ + "Ignored for %s in %s" % + (str(class_), _context.info), stacklevel=3) + + super(view, self).__init__( + _context, permission, for_=for_, name=name, layer=layer, + class_=class_, allowed_interface=allowed_interface, + allowed_attributes=allowed_attributes, menu=menu, title=title, + provides=provides) + + def __call__(self): (_context, name, for_, permission, layer, class_, allowed_interface, allowed_attributes) = self.args _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org https://mail.zope.org/mailman/listinfo/zope-checkins