[Zope-CMF] <genericsetup:upgradeDepends>
Rob Miller
ra at burningman.com
Wed Aug 13 19:22:09 EDT 2008
Rob Miller wrote:
> hi all,
>
> i've got a GenericSetup branch called 'ra-depends-tag' with a working
> implementation of a <genericsetup:upgradeDepends> ZCML tag. this tag
> can be used anywhere that you could use a <genericsetup:upgradeStep> tag
> (i.e. either standalone, or nested within a
> <genericsetup:upgradeSteps>). in fact, upgradeDepends is simply a
> special case of upgradeStep that allows you to specify a set of profile
> import steps to be re-applied to the site, rather than calling a generic
> python handler.
>
> here's an example of how it looks:
>
> <genericsetup:upgradeDepends
> profile="Products.Something:default"
> source="1.0"
> destination="1.1"
> sortkey="10"
> title="Re-run 'foo' import step"
> import_steps="foo"
> purge="True"
> run_deps="False"
> />
>
> or alternatively:
>
> <genericsetup:upgradeSteps
> profile="Products.Something:default"
> source="1.0"
> destination="1.1"
> sortkey="10"
> />
> <genericsetup:upgradeDepends
> title="Re-run 'foo' and 'bar' import steps"
> import_steps="foo bar"
> purge="True"
> run_deps="False"
> />
> <genericsetup:upgradeStep
> title="Do something else"
> handler="Products.Something.upgrades.do_something_else"
> />
> </genericsetup:upgradeSteps>
>
> some notes:
>
> - there is no problem nesting both upgradeStep and upgradeDepends tags
> within the same upgradeSteps tag
>
> - the purge and run_deps attributes are optional and both default to False
>
> - the import_steps attribute is of token type, so you can list multiple
> steps separated by whitespace and they will all be run
>
> - the import_steps attribute is optional, if it is omitted then the
> entire profile will be reapplied
>
> - it's not demonstrated in the examples above, but the 'checker'
> attribute (which points to a callable that can be run to determine
> whether or not the upgrade action should be performed) is supported, it
> functions exactly as it does within an upgradeStep tag
>
> the justification for the existence of this tag should be pretty
> obvious. one of the most frequent actions that need to be performed
> when upgrading to a new version of a product is the reapplication of
> whichever import steps have been modified since the last profile
> revision. you could use the upgradeStep tag to point to a handler that
> performs this operation, but that requires boilerplate python code, and
> there's no easy way to express whether or not you want the dependencies
> to be run, or purge_old to be set, or even which steps should be run.
> this tag resolves those issues.
>
> please feel free to peek at the branch and provide feedback on the
> work. if there are no objections, i'd like to merge this to the GS
> trunk as soon as it is deemed appropriate by the release manager.
can i assume from the silence that there are no objections to me merging this
to trunk? if i don't hear any within the next 24 hours or so, i'll go ahead
and do so.
cheers,
-r
More information about the Zope-CMF
mailing list