Answering my own question. I was a too impatient with __of__. I now return 'self' unwrapped until the parent is wrapped which works fine: def __of__(self, parent, _iaw=ImplicitAcquisitionWrapper): if type(parent) is not _iaw or not hasattr(parent,'REQUEST'): return self w_self = _iaw(self,parent) ob = parent.aq_acquire('object_to_acquire') w_self.x = ob.function() return w_self On Fri, 25 Apr 2003 10:58:18 +0200 Roché Compaan <roche@upfrontsystems.co.za> wrote:
Hi there
I want to override __of__ on a ObjectManager subclass to set an attribute on 'self' but I am having trouble with acquisition. After I've wrapped 'self' with ImplicitAcquisitionWrapper I still can't acquire objects higher up in the acquisition tree. It seems as if self is wrapped in the context of its parent but the parent remains unwrapped.
def __of__(self, parent): w_self = ImplicitAcquisitionWrapper(aq_base(self), parent) w_self.x = w_self.acquired_object.function() return w_self
I also tried overriding __getattr__ but then 'self' is also unwrapped and I don't think I can wrap it there anyway since I don't have access to its parent.
Any ideas on how to do this?
-- Roché Compaan Upfront Systems http://www.upfrontsystems.co.za
_______________________________________________ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )
-- Roché Compaan Upfront Systems http://www.upfrontsystems.co.za