[Zope] Acquisition and/or Traversal [correction]
Dylan Reinhardt
zope@dylanreinhardt.com
Thu, 30 Jan 2003 15:39:38 -0800
At 02:41 PM 1/30/2003, D2 wrote:
>Thanks for the links, i had read the DevGuide when i began with Zope, but
>found it esoteric at that time.
>My knowledge evolving, it's easier to read
It's a big hurdle, that one. But once you know what it is, the docs are
brilliant. :-)
>What i understood,
>Containment: the objects' house and the path to the object from the root
>context: the road used to reach the object.
>A property will be searched first in the object's containment, then in its
>parents ones, to the root. If the containment-search failed, the search
>will be made in the context.
That's most of it. The one extra wrinkle is, any object specified in
context also has its own containment which (IIRC) also precedes objects
further up the acquisition chain.
>The context may be searched by using basic acquisition or by calling
>methods on wrappers (aq_inner, aq_chain, aq_parent, _of_, etc. .
I'm not sure if "searched" is the word I'd use, but it sounds like you're
headed in the right direction. Also, just FYI, the __of__ method has four
underscores. It's a heck of a good trick to know, that one. :-)
>When i want to add a product or a Proposal i use :
>Company/<Department_id>/<Products_or_Proposals/addMethod : the object will
>inherit of the department properties but will be stored in
><Products_or_Proposals> that will be the context.
So far so good...
>Departements will be one of the aq_parent of the object.
I'm not sure I follow you here. If an object is installed in Products,
then Products will be its parent.
When you call:
Company/department/Products/some_product
then department will be *in* the acquisition chain for some_product, but
Products will still be its parent.
I might be getting nit-picky at this point... what you've described sounds
like it could work. But for the most part, Acquisition needs to be
understood, not manipulated. It's rarely the case that you'll use the
acquisition wrapper methods unless you're developing your own Python
Products... at which point, your solution would be radically different.
>as i need to have the sub's specific Products + the HQ's Products, i test
>the 'related_to' and 'belongs_to' properties.
I'm not sure I see how that improves on using a folder hierarchy to group
products. Either way you're segregating your products by owner, and a
folder hierarchy would make that segregation far easier to inspect and
enforce... also you may run into trouble when you want one version of a
product for one department but want the rest of the departments to use the
HQ version. I'm sure it's quite possible to make your solution feasible,
but there may be challenges along the way. But then again, there are
always challenges, aren't there? ;-)
>Not too stupid ?
Not stupid at all... but at a certain point, the best way to tell if you
have a design weakness is to give it a try. I'd say give it a go.
Happy Zoping,
Dylan