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.
Zope-CMF maillist - Zope-CMF@lists.zope.org
See http://collector.zope.org/CMF for bug reports and feature requests