z3c.form vs. Invalid exceptions

Martin Aspeli <[email protected]>
Newsgroups gmane.comp.web.zope.devel
Message-ID <[email protected]>
Hi,

The z3c.form doctests make it look like raising zope.interface.Invalid() 
would be an acceptable thing for a validator to do. It also makes it 
look like the argument passed to the Invalid() constructor is a string 
that would be displayed as an error message.

However, when I do this (in a constraint or a IValidator adapter), the 
exception is not caught, and so causes a traceback. In field.py, we have::

           try:
                 widget.setErrors = self.setErrors
                 raw = widget.extract()
                 if raw is not interfaces.NO_VALUE:
                     value = 
interfaces.IDataConverter(widget).toFieldValue(raw)
                 zope.component.getMultiAdapter(
                     (self.content,
                      self.request,
                      self.form,
                      getattr(widget, 'field', None),
                      widget),
                     interfaces.IValidator).validate(value)
             except (zope.schema.ValidationError,
                     ValueError, MultipleErrors), error:
                 view = zope.component.getMultiAdapter(
                     (error, self.request, widget, widget.field,
                      self.form, self.content), 
interfaces.IErrorViewSnippet)
                 view.update()
                 if self.setErrors:
                     widget.error = view
                 errors += (view,)

And indeed, this doesn't catch Invalid. In error.py, on the other hand, 
there is an InvalidErrorViewSnippet.

Is this intentional?

Martin

-- 
Author of `Professional Plone Development`, a book for developers who
want to work with Plone. See http://martinaspeli.net/plone-book

_______________________________________________
Zope-Dev maillist  -  [email protected]
https://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope-announce
 https://mail.zope.org/mailman/listinfo/zope )
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.