[Zope-dev] z3c.form: Problem validating file uploads

Michael Howitz mh at gocept.com
Sun Apr 12 09:12:38 EDT 2009


Hi,

I'm using a trunk version of z3c.form and have the following situation:
In my interface I have a zope.schema.Bytes field.
z3c.form.converter.FileUploadDataConverter.toFieldValue returns  
z3c.form.interfaces.NOT_CHANGED when I do not upload a file.
z3c.form.validator.SimpleFieldValidator.validate fails later on as the  
value (z3c.form.interfaces.NOT_CHANGED) is not of type str (which is  
required by the Bytes field).
I created a branch in svn to show the behavior. (z3c.form/branches/ 
icemac_validate_NOT_CHANGED)

I'm not sure how to fix this generally, some possible solutions come  
to my mind, but each idea has its own problems:

1) Create a special validator for zope.schema.Bytes +  
z3c.form.interfaces.IFileWidget which knows how to handle NOT_CHANGED.
    This does not seem to be a really general solution and might have  
the same problems like the following ideas.

2) When z3c.form.validator.SimpleFieldValidator.validate is called  
with NOT_CHANGED as value, try to look up the value on the context  
object.
    This fails on AddForms as the context there is the parent object.

3) When z3c.form.validator.SimpleFieldValidator.validate is called  
with NOT_CHANGED as value, do not validate hoping the previous value  
was valid.
    This approach fails with AddForms, too, when the Bytes field is  
required. (The missing-value-error does not get raised.)

Anyone having an idea for a possibly working solution?

Yours sincerely,
-- 
Michael Howitz · mh at gocept.com · software developer
gocept gmbh & co. kg · forsterstraße 29 · 06112 halle (saale) · germany
http://gocept.com · tel +49 345 1229889 8 · fax +49 345 1229889 1
Zope and Plone consulting and development



More information about the Zope-Dev mailing list