Jens Vagelpohl wrote:

It's just a bit unintuitive that sometimes you must wrap them, sometimes you don't need to. For a third party coder this could turn into a major headache and bug bear.


I would say it's very bad if we need to train people on when aq-wrapping tools (using __of__() say) is required and when it's not. In fact, I'd say its catastrophic and will break incredible amounts of existing code.

If getToolByName() keps aq wrapping, though, then legacy code shouldn't be affected, so it's only new code using getUtility().

In this case, we probably need to fix the tools themselves so that they don't depend on being aq-wrapped. Actually, Hanno's suggestion is kind of neat. Let the persistent portal object be a (the only) utility providing ISiteRoot in the local utility registry, and when tools need to get the portal, root, do:

 portal = getUtility(ISiteRoot)

I guess it's rare that we'd want to acquire anything from above the portal in a tool (user folders being the only thing I can think of).

We may yet find ourselves in pain in things like Remember or PlonePAS or bits of CMFPlone that override and monkey patch tools, but at least those can be contained.

Martin

_______________________________________________
Zope-CMF maillist  -  Zope-CMF@lists.zope.org
http://mail.zope.org/mailman/listinfo/zope-cmf

See http://collector.zope.org/CMF for bug reports and feature requests

Reply via email to