On Thu, Oct 09, 2003 at 08:46:24PM -0700, Jason Corbett wrote:
Thanks for your reply. I've actually been thinking in an object oriented form for a while. I've looked at implimenting this project in Java using either prevailance or a object persistence model that mapped to a RDBMS. I like the idea of zope, so maybe I should clarify my question:
How does an object in zope know where it sits in the hirearchy,
The only unique identifier that zope provides is the containment path. An object can tell you its containment path by doing foo.absolute_url(1) or foo.getPhysicalPath() depending on what form you want the output in.
and how does it reach other objects.
By path. Zope provides a number of ways to express paths in python: foo["some"]["path"] # does NOT use acquisition, only containment foo.some.path # uses acquisition getattr(foo.some, "path") # uses acquisition foo.unrestrictedTraverse("/some/path/from/zope/root") foo.unrestrictedTraverse("some/path/relative/to/foo") (see also restrictedTraverse) Note that storing a direct reference may be dangerous e.g. you might not have the object you are expecting - in fact it's very likely that you get an acquisition wrapper which may change at any time. On the other hand, storing paths is problematic if you want to be able to move or rename an object and still keep references to it elsewhere. Hence, look at mxmRelations which helps with this. -- Paul Winkler http://www.slinkp.com