[Zope-CMF] Should object paste check FTI?
yuppie
y.2013 at wcm-solutions.de
Fri Jan 11 15:11:27 UTC 2013
Hi!
Wichert Akkerman wrote:
>> 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?)
It does call the base class *if* support for the deprecated
multi-factories is not required.
>> 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.')
>
> The change is actually much simpler: replace the current workflow guard
> check with a call to objType.isConstructionAllowed(self). The FTI checks
> for workflow guards already so you won't need to duplicate that code
> anymore either.
isConstructionAllowed just returns a boolean value, _verifyObjectPaste
tells you what went wrong. Maybe there should be a new method that
raises errors and can be used by isConstructionAllowed and
_verifyObjectPaste?
Cheers,
Yuppie
More information about the Zope-CMF
mailing list