[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