[Zope-CMF] Re: [CMF 2.1] FSPageTemplate & Unicode

Martin Aspeli optilude at gmx.net
Sat Jan 6 13:54:41 EST 2007


Jens Vagelpohl wrote:

> getToolByName does explicitly wrap, even when using getUtility under the 
> covers where it can. I don't forsee any compatibility problems there.

Cool, thanks for clearing that up.

> The portal as utility is a good idea, I like it. This could be used in 
> many places where a tool itself wants to acquire something, which is 
> usually something else at the portal root. I'm not sure about the user 
> folder implications that you mention. The security machinery may fail if 
> a user originates in a user folder above the portal, which cannot be 
> reached by acquisition anymore.


That would of course also be bad; people expect to be able to log in 
with their root admin username.

My concern is just that we need a robust solution that doesn't put too 
much onus on the end developer. If I have to do this it's pretty horrendous:

  >>> mtool = getUtility(IMembershipTool)
  >>> mtool = mtool.__of__(context)
  >>> # now use mtool

especially since the errors I get will likely be confusing. I have 
learned the hard way that having to understand how acquisition interacts 
with your code fully can be painful, and that sometimes the Zope2/Zope3 
divide still forces this on developers. In this case, we need to make it 
as hard as possible to make mistakes, or the learning curve will just 
shoot up again.

In fact, I'm not quite sure I understand the full extent of the problem 
here, which is why I'm not being more pro-active in offering suggestions.

Now, I assume we still create the tool objects as 
portal['portal_membership'] or whatever, i.e. they are still 
SimpleItem's or whatever, so they still have acquisition mixed in. 
Presumably, they should also have an aq_parent always, no?

Then, I assume that on portal setup, we do 
registerUtility(provides=IMembershipTool, 
component=portal.portal_membership) - that is, we are telling the 
persistent local utility registry that we are using the same physical 
object (in the ZODB), rather than giving it a factory from which to 
create its own object.

This is what leads to believe there ought to be an aq_parent by 
containment, but I guess I may be wrong?

Martin



More information about the Zope-CMF mailing list