Jens Vagelpohl wrote at 2008-8-16 11:45 +0200:
>
>On Aug 16, 2008, at 11:06 , Dieter Maurer wrote:
>
>> The easiest way to determine the "uid" is probably
>> to locate the object via a catalog search. You will get a catalog
>> proxy
>> for the object, often also called "brain".
>> This proxy has the method "getPath()"
>> which returns the object's "uid" -- don't ask about the inconsistent
>> naming (at one place "uid", at another one "path").
>
>The naming is not inconsistent. The UID happens to be the path by
>default, but it doesn't need to be. The getPath method returns the
>path, not the UID.

Advertising

You err with the last sentence (which indicates that consistent
naming *is* important):
"CatalogBrain.getPath" is mapped to "ZCatalog.getpath"
which is mapped to "Catalog.paths".
And the comment in "Catalog" says
# self.uids is a mapping of the
# object unique identifier to the rid, and self.paths is a
# mapping of the rid to the unique identifier
The code confirms this comment:
self.uids[uid] = index
self.paths[index] = uid
Thus, "getPath" *DOES* return the uid and not the path.
--
Dieter
_______________________________________________
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-announcehttp://mail.zope.org/mailman/listinfo/zope-dev )