On Jan 11, 2013, at 16:11 , yuppie <y.2...@wcm-solutions.de> wrote:
> 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
> 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?
Is the ValueError currently raised by _verifyObjectPaste displayed? OFS itself
uses a CopyError(MessageDialog(…)) construct, but that isn't very practical for
UIs anywhere as far as I know (I'm not counting the default Zope2 error page).
Zope-CMF maillist - Zope-CMF@zope.org
See https://bugs.launchpad.net/zope-cmf/ for bug reports and feature requests