On Jan 11, 2013, at 16:11 , yuppie <[email protected]> wrote: > 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?
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). Wichert. _______________________________________________ Zope-CMF maillist - [email protected] https://mail.zope.org/mailman/listinfo/zope-cmf See https://bugs.launchpad.net/zope-cmf/ for bug reports and feature requests
