[Zope-CMF] Extending FTI.isConstructionAllowed

Tres Seaver tseaver at palladion.com
Tue Jun 2 12:35:46 EDT 2009


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Wichert Akkerman wrote:
> Previously Tres Seaver wrote:
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> Wichert Akkerman wrote:
>>> I have a use case where I need to put additional restrictions on object 
>>> creation, in particular I need to restrict the maximum depth of items 
>>> inside of a container of a specific type. The ideal place to put such a 
>>> restriction seems to be the isConstructionAllowed method on the FTI. 
>>> Currently this method is not very extensible, which leads to complicated 
>>> code in various FTI types.
>>>
>>> I am considering to add an extension point here, something like this:
>>>
>>> class ITypeConstructionFilter(Interface):
>>>      def __init__(fti, container):
>>>          """Adapt on the FTI of the object being created and the target 
>>> container"""
>>>
>>>      def allowed():
>>>          """Check if construction is allowed."""
>>>
>>>
>>> current checks such as the workflow check that was added in CMF 2.2, or 
>>> the type constraint logic Plone has in ATContentTypes could be moved to 
>>> such an adapter. The standard isConstructionAllowed method could then 
>>> query all registered adapters to check if construction should be possible.
>>>
>>> Does this sound sensible?
>> I'm not sure about querying all adapters:  I think it would be clearer
>> to query the one adapter whose name corresponds to the type name of the
>> FTI (the "query all" case leads to tricky / emergent behavior).
> 
> Querying a single adapter makes it very hard to use this as an extension
> point. Being able to have multiple independent validation-hooks is the
> whole point of my suggestion, and being able to only use a single
> adapter would make that impossible.

I don't *want* multiple third-party products to register this adapter:
I think it belongs to the integrator to set the policy for the site.
"Reusable policy" is an oxymoron.


Tres.
- --
===================================================================
Tres Seaver          +1 540-429-0999          tseaver at palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFKJVTi+gerLs4ltQ4RAnT7AJ0aNlB5Vr1MHdSnBMcxrcfb70dIDQCgmAv0
VhcD0BrbHpW1c60aZlCvai0=
=haLI
-----END PGP SIGNATURE-----



More information about the Zope-CMF mailing list