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. Wichert. -- Wichert Akkerman <wich...@wiggy.net> It is simple to make things. http://www.wiggy.net/ It is hard to make things simple. _______________________________________________ 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