[Zope-CMF] Re: Add forms and menus

yuppie y.2008 at wcm-solutions.de
Mon Jul 14 06:37:37 EDT 2008


Hi Martin!


Martin Aspeli wrote:
>>>         # check preconditions
>>>         checkObject(container, name, content)
>>
>> I doubt constraints based on __setitem__ and __parent__ work in Zope 2.
> 
> Well, they do in the sense that if you have them and we have this code, 
> we'll get an exception. They don't work generally, tough, so this may be 
> YAGNI. It was copied from Five's Adding implementation, so I figured it 
> should be kept if someone's relying on it.

That's quite hypothetical. If someone figures out how to use this for 
stuff like the allowType check, it's useful. If not, it is YAGNI.

In case of doubt, I prefer to remove code like that and to wait until 
someone complains.

>>>         content.id = name
>>>         container._setObject(name, content)
>>>         content = container._getOb(name)
>>>                 if fti is not None:
>>>             fti._finishConstruction(content)
>>
>> CMF trunk uses events instead of _finishConstruction.
> 
> Ah, nice. Do you think it'd be feasible to backport this, i.e. copy the 
> event handler somewhere in Plone so long as Plone's still using an older 
> version of CMF? Or does the new event handler rely on other changes to 
> CMF as well?

The changes in handleContentishEvent are simple. The tricky part is to 
make sure notifyWorkflowCreated and indexObject aren't called twice if 
the types tool is used for creating content.

BTW: plone.z3cform's AddForm doesn't include a create method, so I can't 
see your complete create-and-add procedure. You might want to compare 
your code with the ContentAddFormBase of CMFDefault trunk:
http://svn.zope.org/Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py?rev=86225&view=auto

>>> We could make this overrideable as well, with another FTI property.
>>
>> I guess I'd rather have a flexible explicit URL than an implicit URL 
>> ruled by convention.
> 
> Agree. So does this mean we want a separate property for the add view 
> name? Should it be a simple string or a TALES thing?

Add links are just special 'actions', they should be integrated with 
CMF's action machinery. Based on the information in the type infos we 
should be able to create normal IActionInfo objects. (IActionInfo 
defines the non-persistent wrapper around actions, today we would use 
adapters to implement this.)

If we don't want to use a convention, we need a new property. And if we 
want to be flexible enough to add the portal type name to the query, a 
TALES expression for the URL wouldn't be overkill.


Cheers,

	Yuppie



More information about the Zope-CMF mailing list