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

# UniqueId -----------------------------------------------------
security.declarePublic( 'UniqueId' )
def UniqueID( self ):
    '''Designing Futures element - UniqueID'''
        return self.unique_id
        return ""

import md5, base64, time,  string

def ETIMakeUniqueID(id):
    ''' Generate a unique id '''
    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.



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]
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope )

Reply via email to