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?

Question: zope.container.constraints handles this in a different way, 
using a precondition defined in the interface. Did you have a look at 
that code? If we switch to that pattern, we could use different 
preconditions for containers with different interfaces. Would that be 
sufficient for your use case?

Cheers, Yuppie

_______________________________________________
Zope-CMF maillist  -  Zope-CMF@lists.zope.org
http://mail.zope.org/mailman/listinfo/zope-cmf

See https://bugs.launchpad.net/zope-cmf/ for bug reports and feature requests

Reply via email to