[Zope-dev] zope.formlib does not correctly validate invariants with fields from a base interface

Sebastian Wehrmann sw at gocept.com
Tue Jun 2 08:05:16 EDT 2009


Hi,

I'd like to fix the following bug: https://bugs.launchpad.net/zope2/+bug/382717

Example:

 >>> import zope.interface
 >>> import zope.schema

 >>> class IBase(zope.interface.Interface):
... title = zope.schema.TextLine(
... title=u"Title",
... required=False)

 >>> class ISub(IBase):
... sub_title = zope.schema.TextLine(
... title=u"Subtitle",
... required=False)
...
... @zope.interface.invariant
... def title_or_subtitle(obj):
... if not (obj.title or obj.sub_title):
... raise zope.interface.Invalid(
... u"Set either title or subtitle.")

When validating an object (using zope.formlib.form.checkInvariants),  
which implements ISub, it's not possible to access the title attribute  
inside the "title_or_subtitle" invariant checker method. It's  
explicitly filtered out, which means, that only those schema  
attributes, defined on the ISub interface, are available.

Is there any reason for this behavior? There is no test for this  
behavior.

Suggestion:

If there is no specific reason for this behavior, the invariant should  
get all the form field data from the request.

Best regards,

--
Sebastian Wehrmann · sw at gocept.com
gocept gmbh & co. kg · forsterstraße 29 · 06112 halle (saale) · germany
http://gocept.com · tel +49 345 1229889 12 · fax +49 345 1229889 1
Zope and Plone consulting and development

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2425 bytes
Desc: not available
Url : http://mail.zope.org/pipermail/zope-dev/attachments/20090602/9118fcad/attachment.bin 


More information about the Zope-Dev mailing list