PortalFolderBase overrides _verifyObjectPaste to add some extra checks on top 
of OFS's CopyContainer to check if content may be pasted: it copies the 
permission checking (why doesn't it call the base class for that?) and adds 
code to check for allowed types. There is one check missing there that is 
checked when creating new object: the FTI may block creation of new content as 
well through its isConstructionAllowed method. Is there any reason 
_verifyObjectPaste check this as well? This should be simple to do:

    portal_type = getattr(aq_base(obj), 'portal_type', None)
    if portal_type:
        fti = queryUtility(ITypeInformation, name=portal_type)
        if fti is not None and not fti.isConstructionAllowed(self):
            raise ValueError('You can not add the copied content here.')

This allows for much more control over content pasting.

Zope-CMF maillist  -  Zope-CMF@zope.org

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

Reply via email to