I applied the follwing validators for upload fields in version 1.91.6:

requires = [
    IS_NULL_OR(IS_UPLOAD_FILENAME(extension='pdf')),
    IS_NULL_OR(IS_LENGTH(1048576, 1024)),
]

Everything was fine until I used a SQLFORM object with an upload
keyword for editing.

Then, a delete checkbox of an upload widget falsely disappeared which
should be displayed with a link to the uploaded file.

This is the result of the code in UploadWidget class of gluon/
sqlhtml.py:

if requires == [] or isinstance(requires, IS_EMPTY_OR):
    inp = DIV(, ...,
                     UploadWidget.ID_DELETE_SUFFIX),
                     ...)

And, the next patch would tentatively fix the problem:

if (requires == [] or isinstance(requires, IS_EMPTY_OR) or
    (isinstance(requires, (list, tuple)) and
     reduce(lambda a,b:a&b, [isinstance(r, IS_EMPTY_OR) for r in
requires]))):
    ...

But, I am not sure if the above patch is smart.
Is there any way to implement such validation without patches nor
custom validators?

Reply via email to