Log message for revision 79325: Commit first version of AQBBB Changed: U Zope/branches/philikon-aq/lib/python/Products/Five/bbb.py U Zope/branches/philikon-aq/lib/python/Products/Five/browser/__init__.py
-=- Modified: Zope/branches/philikon-aq/lib/python/Products/Five/bbb.py =================================================================== --- Zope/branches/philikon-aq/lib/python/Products/Five/bbb.py 2007-08-28 19:56:54 UTC (rev 79324) +++ Zope/branches/philikon-aq/lib/python/Products/Five/bbb.py 2007-08-28 20:13:03 UTC (rev 79325) @@ -19,10 +19,32 @@ from zope.component.interfaces import ComponentLookupError from zope.app.publisher.browser import getDefaultViewName -import zExceptions -import Products.Five.security -from Products.Five import fivemethod +import Acquisition + +class AquisitionBBB(object): + """Emulate a class implementing Acquisition.interfaces.IAcquirer and + IAcquisitionWrapper. + """ + + def __of__(self, context): + # Technically this isn't in line with the way Acquisition's + # __of__ works. With Acquisition, you get a wrapper around + # the original object and only that wrapper's parent is the + # new context. + return self + + aq_self = aq_inner = aq_base = property(lambda self: self) + aq_chain = property(Acquisition.aq_chain) + aq_parent = property(Acquisition.aq_parent) + + def aq_acquire(self, *args, **kw): + return Acquisition.aq_acquire(self, *args, **kw) + + def aq_inContextOf(self, *args, **kw): + return Acquisition.aq_inContextOf(self, *args, **kw) + + class IBrowserDefault(Interface): """Provide a hook for deciding about the default view for an object""" Modified: Zope/branches/philikon-aq/lib/python/Products/Five/browser/__init__.py =================================================================== --- Zope/branches/philikon-aq/lib/python/Products/Five/browser/__init__.py 2007-08-28 19:56:54 UTC (rev 79324) +++ Zope/branches/philikon-aq/lib/python/Products/Five/browser/__init__.py 2007-08-28 20:13:03 UTC (rev 79325) @@ -18,23 +18,16 @@ import Acquisition import zope.publisher.browser -class BrowserView(zope.publisher.browser.BrowserView): +from Products.Five.bbb import AquisitionBBB - # BBB for code that expects BrowserView to still inherit from - # Acquisition.Explicit. +class BrowserView(zope.publisher.browser.BrowserView, AquisitionBBB): + # Use an explicit __init__ to work around problems with magically inserted # super classes when using BrowserView as a base for viewlets. def __init__(self, context, request): zope.publisher.browser.BrowserView.__init__(self, context, request) - def __of__(self, context): - # Technically this isn't in line with the way Acquisition's - # __of__ works. With Acquisition, you get a wrapper around - # the original object and only that wrapper's parent is the - # new context. - return self - # Classes which are still based on Acquisition and access # self.context in a method need to call aq_inner on it, or get a # funky aq_chain. We do this here for BBB friendly purposes. @@ -46,14 +39,3 @@ self._parent = parent aq_parent = __parent__ = property(__getParent, __setParent) - - # We provide the aq_* properties here for BBB - aq_self = aq_inner = aq_base = property(lambda self: self) - aq_chain = property(Acquisition.aq_chain) - - def aq_acquire(self, *args, **kw): - return Acquisition.aq_acquire(self, *args, **kw) - - def aq_inContextOf(self, *args, **kw): - return Acquisition.aq_inContextOf(self, *args, **kw) - _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org http://mail.zope.org/mailman/listinfo/zope-checkins