Hi For what it is worth here are some code snippets from the monkeypatch that adds the basics to show what I have been doing. It is a bit messy and probably not the best way to do it, but this gives you the gist of what is going on.
First off I have been monkeypatching the DefaultDublinCoreImpl and adding the following field and method. I also override the behaviour of manageAfterClone # UniqueId ----------------------------------------------------- security.declarePublic( 'UniqueId' ) def UniqueID( self ): '''Designing Futures element - UniqueID''' try: return self.unique_id except: return "" #------------------------------------------------------------------ import md5, base64, time, string def ETIMakeUniqueID(id): ''' Generate a unique id ''' oid=md5.new() oid.update(id) oid.update(str(time.time())) oid=oid.digest() oid=string.strip(base64.encodestring(oid)) return 'DF_OID_'+oid.replace('/','$') I need to extend the functionality of manage_afterClone so that if an object is cloned/copied it needs to have the UniqueID regenerated, otherwise we will end up with duplicate ID's (not a good thing) def manage_afterClone(self,obj): obj.unique_id = ETIMakeUniqueID(obj.title_or_id()) Overide the __init__ method in DefaultDublinCoreImpl to include self.unique_id = ETIMakeUniqueID(title) So that the unique id is initialised on object creation. The bind/rebind these methods to the base classes, so that all content types will exhibit this behaviour. DefaultDublinCoreImpl.UniqueID = UniqueID DefaultDublinCoreImpl.__init__ = __init__ Item.manage_afterClone = manage_afterClone Then I set up an Index and Metadata for UniqeID in the portal_catalog. Now any object can be found by UniquID. Irrespective of whats it's path is, by using the catalog. I find also that an awfull lot of the time the metadata is often sufficient without having to retrieve the object. Regards Tim On Fri, 2002-07-12 at 23:44, J C Lawrence wrote: > On 12 Jul 2002 14:43:23 +0800 > Tim Hoffman <[EMAIL PROTECTED]> wrote: > > > This is a feature I too wanted, and my solution was to to give every > > object a unique object ID (new metadata field) which get's updated if > > the object is cloned. This Object ID is then catalogued, and then > > content which needs links uses the object Id plus a retrieval > > method. This way doc's can move anywhere and no broken links. > > Neat. Smart. Might be a good idea to throw the details and a sample > code blob up on the Collector for others to follow. > > -- > J C Lawrence > ---------(*) Satan, oscillate my metallic sonatas. > [EMAIL PROTECTED] He lived as a devil, eh? > http://www.kanga.nu/~claw/ Evil is a name of a foeman, as I live. _______________________________________________ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )