[Zope-dev] Acquisition Confusion :S
Chris Withers
chrisw@nipltd.com
Mon, 14 Aug 2000 14:29:20 +0100
Evan Simpson wrote:
> I haven't got the whole reason, but here are some of the pieces:
>
> - never expose a "bare" object, or even one with an incomplete context
Why? You can get at it through aq_base anyway, surely?
Also, Jim Fulton wrote a while back:
> Sure. There is no guarentee that all objects are wrapped.
> - allow the user to backtrack along the context chain
I take it this is the reason for wrappers? Would it matter if the
wrappers were structured differently to provide a different search
order?
> These two together give you the part about aq_parent always being the
> previous acquisition result.
Yup, got that :-)
> - allow recovery of containment information
Urm, didn't quite follow that :S
> - base security on containment
aq_inner, right?
> These two motivate the simplification of raw acquisition.
Which simplification is that?
> The current acquisition implementation is thus a weird hybrid of containment
> and context.
I'll say ;-)
> It isn't hard to convert a standard acquisition wrapper into either of the
> other sort. I'm going to propose adding something like the following
> functions:
> def aq_context(ob):
> def aq_containment(ob):
Okay, so taking our long-running example:
> A /
> I
> B/
> I
> C/
> D
>
> (A contains B and C, C contains D).
> (A contains an I, as does B)
> A.B.C.D
Which I, if any, would each of the following return:
<dtml-var expr="aq_context(A.B.C.D).I">
<dtml-var expr="aq_context(A.B.C).I">
<dtml-var expr="aq_context(A.B).I">
<dtml-var expr="aq_context(A).I">
<dtml-var expr="aq_containment(A.B.C.D).I">
<dtml-var expr="aq_containment(A.B.C).I">
<dtml-var expr="aq_containment(A.B).I">
<dtml-var expr="aq_containment(A).I">
cheers,
Chris