[Zope-dev] Acquisition Confusion :S

Steve Alexander steve@cat-box.net
Mon, 14 Aug 2000 13:44:28 +0100


Chris Withers wrote:
> 
> Steve Alexander wrote:
> > That makes for a lot of security checks.
> > There are possible optimisations, though. But this starts to get even
> > more complicated.
> 
> Does that mean it won't work, would be very slow, or both? ;-)

It will work. It will be slower.

I think Evan Simpson's suggestion of adding two new methods to the
acquisition wrapper is a good idea. That way, Zope remains
backward-compatible, and you get to make an explicit choice of how you
want acquisition to work, if you wish.

Perhaps there's a Collector entry on this?

---- quoted from Evan's email. Untested.
def aq_context(ob):
    context = []
    while ob is not None:
        context.append(ob.aq_base)
        ob = ob.aq_parent
    ob = context.pop()
    while context:
        ob = context.pop().__of__(ob)
    return ob

def aq_containment(ob):
    context = []
    while ob is not None:
        context.append(ob.aq_base)
        ob = ob.aq_inner.aq_parent
    ob = context.pop()
    while context:
        ob = context.pop().__of__(ob)
    return ob
----

As he pointed out, they'd make useful external methods too.

Perhaps these will find their way into Zope 2.3?

--
Steve Alexander
Software Engineer
Cat-Box limited
http://www.cat-box.net