Hi Martin!

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

Reply via email to