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