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
>>
>>

-- 



Reply via email to