[Zope-CMF] Historical revisions in CMF (was Re: CMF newbie
questions)
Tres Seaver
tseaver@zope.com
26 Mar 2003 12:44:18 -0500
On Wed, 2003-03-26 at 11:32, Ausum Studio wrote:
> ----- Original Message -----
> From: "Terry Kerr" <terry@adroit.net>
> (...)
> > I would like the 'old' version of the article to remain published until
> the new
> > one is reviewd and published. I realise this is probably quite difficult
> to
> > achieve since it would mean that the article object (which I actually
> haven't
> > created yet but will most likely be a python product) will need some sort
> of
> > versioning. Simply creating a custom workflow cannot accomodate my
> requirements
> > I don't think. Has anybody else solved a problem similar to this with the
> CMF?
>
> I've enabled CMF to handle revisions by allowing it to inherit from
> OFS.History, on a experimental basis, and it works fine so far. If you want
> to try it, open CMFCore/PortalContent.py with any editor an perform the
> changes indicated down below. After you restart Zope, the "History" tab will
> appear for all contentish objects, in the management interface. Starting
> that point you'll need to provide methods (or modify existing ones) to
> access those revisions. I'm including a simple history-viewer script.
>
> A simple and general workaround in your case is to modify the view methods
> of your content types to make them render the closest published revision (or
> any other you indicate, based on your site's policy), when the object's
> state is 'retracted' (yes, create that one). As currently there's no
> relation between revisions and the workflow's review_history, as provided by
> 'portal_workflow.getInfoFor', one of your to-write methods might be one that
> compares timestamps and returns the mentioned revision object.
>
> I'll publish a How-to on this subject, provided there's no code conflicts
> I'm not aware of. :)
>
>
>
> Ausum
>
>
>
>
> Modifications to PortalContent.py:
>
> ....................
> NoWL = 0
> except ImportError:
> NoWL = 1
>
> from OFS.History import Historical # added line
>
> class PortalContent(DynamicType, Historical, CMFCatalogAware, SimpleItem):
> # added 'Historical'
>
> """
> Base class for portal objects.
>
> Provides hooks for reviewing, indexing, and CMF UI.
> .......
>
> and:
> .........
> + CMFCatalogAware.manage_options
> + SimpleItem.manage_options
> + Historical.manage_options # added line
> )
>
> security = ClassSecurityInfo()
> .......
>
> A basic python script to view the history information of any contentish
> object:
>
> # HistoryWatcher:
> for item in context.manage_change_history():
> print
> for k,v in item.items():
> print k, ":", v
> historical_object = context.HistoricalRevisions[item['key']]
> print historical_object
>
> return printed
Given a working example, with reasonable testing: can anyone see /
think of a reason not to land this for 1.4?
Tres.
--
===============================================================
Tres Seaver tseaver@zope.com
Zope Corporation "Zope Dealers" http://www.zope.com