Done: Issue 29 <https://code.google.com/p/pyfpdf/issues/detail?id=29>: on error IS_LIST_OF() changes the value of INPUT
2012/9/16 Massimo Di Pierro <massimo.dipie...@gmail.com> > Definitively a problem with the widget. Please open a ticket about it. > > > On Saturday, 15 September 2012 17:01:44 UTC-5, mweissen wrote: > >> Sorry, I did not mention: >> I did not use a form, I have used the admin interface to insert and >> update the records. >> I have tried it twice: first with my "real" program and second with the >> small program I have sent. >> >> Now I have added this function: >> >> def em(): >> form=SQLFORM(db.address) >> if form.process().accepted: >> response.flash='ok' >> elif form.errors: >> print form.errors >> return dict(form=form) >> >> ... and used it to add two wrong email-addresses: >> aa >> bb >> >> I did not get an error messege below the fields, but the flash "Errors in >> form, please check it out" and both fileds look like >> ['aa', 'bb'] >> >> >> 2012/9/15 Massimo Di Pierro <massimo....@gmail.com> >> >>> I cannot reproduce this: >>> >>> >>> IS_EMAIL()('x') >>> ('x', 'enter a valid email address') >>> >>> IS_EMAIL()('x...@x.com') >>> ('x...@x.com', None) >>> >>> IS_LIST_OF(IS_EMAIL())(['x']) >>> (['x'], 'enter a valid email address') >>> >>> IS_LIST_OF(IS_EMAIL())(['x...@x.**com']) >>> (['x...@x.com'], None) >>> >>> IS_LIST_OF(IS_EMAIL())(['x#x.**com <http://x.com>']) >>> (['x#x.com'], 'enter a valid email address') >>> >>> can your print form.errors? Perhaps this is a problem with the widget >>> and not the validator. >>> >>> On Saturday, 15 September 2012 13:08:50 UTC-5, mweissen wrote: >>> >>>> I have a simple table, one name and a list of email-addresses: >>>> >>>> db.define_table('address', >>>> Field('name'), >>>> Field('emails','list:string', requires=IS_LIST_OF(IS_EMAIL()****))) >>>> >>>> Now I add one name and two email-addresses to this table. >>>> >>>> Id: 1 >>>> Name: Smith >>>> Emails: jsm...@example.com >>>> j...@example.com >>>> >>>> Everything looks fine. >>>> >>>> But if there is an error in the email-address (which is catched by the >>>> validator), a lot goes wrong: >>>> Both email-addresses are converted to a list; this list is doubled and >>>> ... >>>> >>>> Id: 1 >>>> Name: Smith >>>> Emails: ['jsmith*#*example.com', 'j...@example.com'] >>>> ['jsmith#example.com', 'j...@example.com'] >>>> >>>> ... there is no error message! >>>> >>>> Now I have changed the model to >>>> >>>> db.define_table('address', >>>> Field('name'), >>>> Field('emails','list:string', requires=IS_EMAIL())) >>>> >>>> but this model does not detect the wrong email address. >>>> >>>> What is the right way to use a validator with a list of strings? >>>> >>>> Regards, Martin >>>> >>> >>> --