In CMF 2.3 (beta) all core tools can be looked up using getUtility for mandatory tools or queryUtility for optional tools. That's a big step forward, but there are still some places where we depend on tool characteristics:

1.) Bootstrapping:

Importing .zexp files or upgrading old sites some tools are used before they are registered as utilities.

Currently there are fallbacks in place that use the old tool lookup. I guess some events need to be disabled for .zexp imports.

2.) Site root lookup:

In several tools we still assume aq_parent(aq_inner(self)) is the portal. Or other code uses the tool as context object, expecting root and request in its acquisition chain.

These should be identified and replaced by getUtility(IURLTool).getPortalObject() or other suitable code.

3.) Action providers:

Action providers are still registered and looked up by ID.

Most Actions were moved to the Actions Tool. Only two 2 special Action providers are left: Types Tool and Workflow Tool.

I have no plans to convert that registry to something based on utility lookup. I guess it would be better to create specialized 'object' and 'workflow' categories that are linked to the Types Tool and the Workflow Tool. But that's a different story.

4.) Skins:

The Skins Tool lookup is based on the getSkinsFolderName method.

If there are no objections, I'll replace that by queryUtility(ISkinsTool) without providing any backward compatibility code for getSkinsFolderName.



Zope-CMF maillist  -  Zope-CMF@zope.org

See https://bugs.launchpad.net/zope-cmf/ for bug reports and feature requests

Reply via email to