Make sure you are using 2.0.9 because there is a subtle issue in 2.0.x (x<9) which may affect the behavior in your case.
On Friday, September 14, 2012 9:04:49 AM UTC-5, Luis Furtado wrote: > > I'm calling session.forget() to try and fix the problem, but it didn't. > Anyway, the problem was there before that. I just removed it and it made > no difference. > > The whole behaviour of the app is variable. > Sometimes it does the validation phase and then I fill it w/o errors and, > after submitting, the app. goes on to the 2nd form. > Other times it just won't do any validation and restarts the app. > When this happens, it usually goes to an URL like this: > > http://127.0.0.1:8000/nova/default/f_prod?_formkey=bd681283-abd1-4e18-885b-2597984db8ee&_formname=prod%2Fcreate&cmr_convenc=98&cmr_mpb=7&cmr_seco=&cmr_verde=&codigo=4600&r_id=40&_signature=344c90d0588ad87ce1f587024fe826ccf260d2dc > > When all goes well there are no GET args on the URL. > I've checked in the html code created, it is <form ... method="post">. > > Another problem is it never executes "session.r_id = form.vars.id" after > form accepted. Maybe I should address this in a different post. > > This is my 1st web2py app. > What am I missing? > > Thanks > Luis > > > On Friday, 14 September 2012 09:10:59 UTC+1, Niphlod wrote: >> >> why are you calling session.forget() ? >> >> On Thursday, September 13, 2012 8:43:30 PM UTC+2, Luis Furtado wrote: >>> >>> Hello, >>> When I submit the form no validation errors are shown and, after a few >>> seconds, it just shows the form again, totally blank even if I had filled >>> some fields. >>> If I include @auth.requires_login() at index() it even gets back to >>> login instead of the form. >>> It seems as if the application is restarted when it tries to do the >>> validation phase. >>> >>> ------------------- MODEL -------------------- >>> db = DAL('sqlite://storage.sqlite') >>> >>> db.define_table( 'concelho', Field('codigo'), Field('nome'), >>> format='%(nome)s') >>> >>> db.define_table( 'freguesia', >>> Field('cod_concelho', requires= IS_IN_DB( db, db.concelho.codigo )), >>> Field('codigo'), >>> Field('nome'), >>> format='%(nome)s' >>> ) >>> >>> db.define_table( 'r', >>> Field('user_id', 'integer'), >>> Field('municipio', requires= IS_IN_DB( db, db.concelho.codigo, >>> '%(nome)s')), >>> Field('freguesia', requires= IS_IN_DB( db, db.freguesia.codigo, >>> '%(nome)s')), >>> Field('morada', requires= IS_NOT_EMPTY()), >>> Field('cod_postal', requires= IS_MATCH('^\d{4}-\d{3}$')), >>> Field('nif', requires= IS_MATCH('^\d{9}$')), >>> Field('nat_juridica', requires= IS_IN_SET(['AUT','EMP','SOC'])), >>> Field('ini_agricola', 'integer', requires= IS_EMPTY_OR( >>> IS_INT_IN_RANGE( 1970, 2012))), >>> Field('p_nome', requires= IS_NOT_EMPTY()), >>> Field('nascimento', 'date', requires = IS_EMPTY_OR( IS_DATE( >>> format='%Y-%m-%d'))), >>> Field('escolaridade', requires = >>> IS_IN_SET(['Básico','Secundário','Licenciatura','Mestrado'])) >>> ) >>> >>> db.define_table( 'prod', >>> Field('r_id', db.r ), >>> Field('codigo', 'integer',label='Espécie', requires= IS_NOT_EMPTY()), >>> Field('cmr_convenc', 'integer',label='Convencional', requires= >>> IS_NOT_EMPTY()), >>> Field('cmr_mpb', 'integer',label='M.P.Biológico',requires= >>> IS_NOT_EMPTY()) >>> ) >>> ------------------ CONTROLLER ----------------- >>> def index(): >>> session.forget() >>> session.r_id = 40 # Initial value -- will be replaced by form.vars.id >>> >>> form = SQLFORM( db.r) >>> if form.process( next=URL('f_prod') ).accepted: >>> session.r_id = form.vars.id >>> response.flash = 'Success (R_ID=%s)' % session.r_id >>> elif form.errors: >>> response.flash = 'ERRORS in the form' >>> else: >>> response.flash = 'Form 1 of 2' >>> >>> return dict( form=form) >>> >>> >>> def f_prod(): >>> >>> RID = session.r_id >>> >>> form = SQLFORM( db.prod) >>> if form.process().accepted: >>> response.flash = 'Success' >>> elif form.errors: >>> response.flash = 'ERRORS' >>> else: >>> response.flash = 'Form 2 of 2' >>> >>> return dict( form=form, RID=RID) >>> --------------------------------- >>> What's wrong? >>> Thanks >>> Luis >>> >>> --