[Zope-CMF] Extending FTI.isConstructionAllowed

yuppie y.2009 at wcm-solutions.de
Tue Jun 2 08:23:46 EDT 2009


Wichert Akkerman wrote:
> Previously yuppie wrote:
>> A CMF specific precondition would look up type restrictions in the fti 
>> of the container.
>>
>> checkFactory and checkObject are quite similar to isConstructionAllowed. 
>> I think we should reimplement this based on zope.container before we 
>> start adding new features.
> 
> I looked at the code in zope.container and frankly it scared me. I found
> the documentation and code hard to follow, and the usage of
> sys._getframe() made me drop the idea of using it.

That scary code is used for supporting 'contains' declarations in the 
interface. I don't propose to write something similar for CMF.

AFAICS it is sufficient to set __setattr__.precondition directly for 
supporting checkObject.

A precondition that just checks allowType would look like this:


   class PortalTypePrecondition:

       def __call__(self, container, name, obj):

           ti = container.getTypeInfo()
           if ti is None:
               return

           if not ti.allowType(obj.getPortalTypeName()):
               raise ValueError(u'Disallowed subobject type: %s' % 
type_name)


Cheers, Yuppie




More information about the Zope-CMF mailing list