Am 03.06.2009 um 10:12 schrieb Wichert Akkerman:

> There are two reasons I want to block creation of the object:  
> performance, and user interface. The last one is more critical: the  
> add-item menus used in Plone (and I suspect CMF as well) look for  
> all object types that can be constructed in the current location.  
> Obviously you do not want to do that by creating all possible  
> objects and testing if you can add them to the container, so we need  
> a way to test if creating an object and adding it to the current  
> container is allowed without creating objects.

I agree with you on the UI aspect! In which case, surely you should be  
looking to set a precondition on checkFactory?

class IItemTypePrecondition(zope.interface.Interface):

     def __call__(container, name, object):
         """Test whether container setitem arguments are valid.

         Raise zope.interface.Invalid if the object is invalid.

     def factory(container, name, factory):
         """Test whether objects provided by the factory are acceptable

         Return a boolean value.

It looks to me like the factory method is the place to do the  
checking. But I guess the problem is integrating this with the  
TypeInfo.allowed_content_types ?

Charlie Clark
Helmholtzstr. 20
D- 40215
Tel: +49-211-938-5360
GSM: +49-178-782-6226

Zope-CMF maillist  -

See for bug reports and feature requests

Reply via email to