Thanks for your support! Maybe the adopted one is much consistent.
On 1月18日, 午前1:21, Massimo Di Pierro <massimo.dipie...@gmail.com> wrote: > "IS_NULL_OR([IS_XXX(..), IS_YYY(..), ..])" > > in trunk now. Good suggestion although I think an internal refactoring > is in order. > > On Jan 16, 10:57 pm, kenji4569 <hos...@s-cubism.jp> wrote: > > > > > > > > > I ended up with making a custom validator "IS_ALL" for the problem: > > > "IS_NULL_OR(IS_ALL([IS_XXX(..), IS_YYY(..), ..])" > > > and it works. > > > The alternatives could be to permit the follwoing interfaces, > > which need patches though: > > > "IS_NULL_OR([IS_XXX(..), IS_YYY(..), ..])" > > > or > > > "[IS_NULL_OR(IS_XXX(..)), IS_NULL_OR(IS_YYY(..)), ..]" > > (the first one) > > > What do you think? > > > Thanks in advance, > > Kenji > > > On 1月12日, 午後10:57, Massimo Di Pierro <massimo.dipie...@gmail.com> > > wrote: > > > > good catch. Let me think about this... > > > > On Jan 12, 1:12 am, kenji4569 <hos...@s-cubism.jp> wrote: > > > > > 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?