[Zope-CMF] Re: Abusing GenericSetup during traditional installs
y.2006_ at wcm-solutions.de
Fri Jul 28 06:34:40 EDT 2006
Martin Aspeli wrote:
> I realise this isn't entirely kosher (and that yuppie has much better
> long-term ideas), but I am wondering if it's possible to invoke some
> GenericSetup handler code during a more traditional Extensions/Install.py
> This is purely for convenience - but if I need a more traditional product
> install (with a UI for uninstall and so on), I can use CMFQuickInstaller or
> external methods. However, doing things like FTIs and workflow definitions
> with GS XML syntax is way more convenient and maintainable.
> Is there some way I could invoke a handler explicitly, e.g. say "run the
> workflow installation handler on this particular XML file from my product
> only"? Or do handlers have pre-requisites of context and/or side-effects
> that make them usable only within the context of a GS import run?
You might have noticed already that GS has two sub-frameworks, one for
configuration handlers and one for content handlers. My answer just
applies to configuration handlers:
The adapters are explicitly made for using them outside the GS tool.
Body adapters are multi-adapters for ISetupEnviron and the interface of
the object, e.g. IActionsTool for the Actions Tool.
ISetupEnviron is a small interface that provides a generic logger object
and the mode in which XML files are applied. GS doesn't ship with a
class that implements only this minimal interface.
So if you have the XML body in 'body', the tool in 'obj' and the
SetupEnviron in 'environ', these two lines are all you need:
importer = queryMultiAdapter((obj, environ), IBody)
importer.body = body
There are other solutions if your XML is part of a registered profile.
More information about the Zope-CMF