[Zope-CMF] Re: cmfuid and zope.app.intids

Miles miles at jamkit.com
Thu May 29 17:22:14 EDT 2008


Hi,

<snip>

>  From the standpoint of trying to prevent reinventing wheels all over 
> the place it sounds like a good idea to re-use a Zope 3 component. 
> However, beware of backwards-compatibility in terms of software and in 
> terms of persistent data generated by the existing version. Like Tres 
> always says, "persistence means always having to say you're sorry".
> 
> Essentially, if you can do it while retaining backwards compatibility 
> I'd be all for it.

Hmm, this depends on how non-trivial or otherwise the upgrade steps can 
be, and what backwards compatibility is acceptable.

I'd propose the following:

  - the existing uid classes remain with deprecation warnings until they 
can be removed, and also have a big "upgrade" button in the ZMI that 
turns them into the "new tool/utility" and imports existing data
  - once upgraded, IObjectAdded events fired by importing new content 
convert and register uids in the new scheme
  - instead of using the catalog, the "tool/utility" would actually 
retrieve the objects by oid, and then check permissions etc directly to 
mimic the CMF catalog (expires, allowedRolesAndUsers etc)
  - for BBB (default), the "tool/utility" would additionally annotate 
the objects with UidAnnotations (as currently) and these can be indexed 
in the catalog.  this could be turned off by not registering an adapter 
(it's only needed for BBB I think)

I suppose the slight deviation from BBB is that if someone is using a 
custom catalog (for example a "day-of-week-to-show" flag to provide 
random search results), they'll also need to provide some sort of 
customisation when objects are fetched by uid to get the same thing to 
happen.  Given the number of people actually using CMFUid and the 
obscurity of the use-case, I think this might be acceptable to just 
document (and/or provide some sort of adapter-based customisation so 
it's easy).

Does that sound BBB enough?  I can't think of anything else that might 
break but that's what tests are for right :-) ?

Miles



More information about the Zope-CMF mailing list