[Zope-dev] z3c.form vs. Invalid exceptions
Martin Aspeli
optilude+lists at gmail.com
Fri Feb 26 08:31:39 EST 2010
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
More information about the Zope-Dev
mailing list