This should never have worked:
Field('seizure_date','date',
writable=False,
...
required=True
),
the field is not writable (so it does not appear in form) and yet it
is required (must have a value when doing insert).
On Mar 22, 11:49 am, Richard Vézina <[email protected]>
wrote:
> Hello,
>
> None of my form won't submit anymore when I try my app under 1.94.5...
>
> It seems to be related to auth problem coming from the refactoring.
>
> Here a example of form, model and trace that occure :
>
> Traceback (most recent call last):
> File
> "/home/richard/Documents/programmation/version_194-5/web2py/gluon/restricte
> d.py",
> line 188, in restricted
> exec ccode in environment
> File
> "/home/richard/Documents/programmation/version_194-5/web2py/applications/sg
> ddms/controllers/ref.py",
> line 229, in <module>
> File
> "/home/richard/Documents/programmation/version_194-5/web2py/gluon/globals.p
> y",
> line 124, in <lambda>
> self._caller = lambda f: f()
> File
> "/home/richard/Documents/programmation/version_194-5/web2py/gluon/tools.py" ,
> line 2331, in f
> return action(*a, **b)
> File
> "/home/richard/Documents/programmation/version_194-5/web2py/applications/sg
> ddms/controllers/ref.py",
> line 26, in create
> if form.accepts(request.vars, session):
> File
> "/home/richard/Documents/programmation/version_194-5/web2py/gluon/sqlhtml.p
> y",
> line 1197, in accepts
> self.vars.id = self.table.insert(**fields)
> File
> "/home/richard/Documents/programmation/version_194-5/web2py/gluon/dal.py",
> line 4341, in insert
> return self._db._adapter.insert(self,self._listify(fields))
> File
> "/home/richard/Documents/programmation/version_194-5/web2py/gluon/dal.py",
> line 4334, in _listify
> raise SyntaxError,'Table: missing required field: %s' % ofield.name
> SyntaxError: Table: missing required field: seizure
>
> ### Model ###
> # ref_fnaregistry
> db.define_table('ref_fnaregistry',
> Field('fnaregistry_id','id'),
> Field('num_part1','string',
> length=20,
> notnull=True,
> requires=[IS_NOT_EMPTY(error_message=T('field can\'t be empty'))],
> required=True
> ),
> Field('num_part2','string',
> length=20,
> notnull=True,
> requires=[IS_NOT_EMPTY(error_message=T('field can\'t be empty'))],
> required=True
> ),
> Field('num_part3','string',
> length=20,
> notnull=True,
> requires=[IS_NOT_EMPTY(error_message=T('field can\'t be empty'))],
> required=True
> ),
> Field('title','text'),
> Field('att_date','date',
> notnull=True,
> requires=[IS_NOT_EMPTY(error_message=T('field can\'t be empty')),
> IS_DATE(format=T('%Y-%m-%d'),error_message=T('valid date of
> format : YYYY-MM-DD!'))],
> required=True
> ),
> Field('seizure','db.auth_user',
> readable=False,
> writable=False,
> default=auth.user and auth.user.id,
> notnull=True,
> requires=[IS_NOT_EMPTY(error_message=T('field can\'t be empty'))],
> required=True
> ),
> Field('seizure_date','date',
> readable=False,
> writable=False,
> default=request.now,
> notnull=True,
> requires=[IS_NOT_EMPTY(error_message=T('field can\'t be empty'))],
> required=True
> ),
> Field('last_action_by','db.auth_user',
> readable=False,
> writable=False,
> default=auth.user and auth.user.id,
> update=auth.user and auth.user.id,
> notnull=True,
> requires=[IS_NOT_EMPTY(error_message=T('field can\'t be empty'))],
> required=True
> ),
> Field('sdate','datetime',
> readable=False,
> writable=False,
> default=request.now,
> update=request.now,
> notnull=True,
> requires=[IS_NOT_EMPTY(error_message=T('field can\'t be empty'))],
> required=True
> ),
> migrate=False,
> sequence_name='ref_fnaregistry_fnaregistry_id_seq',
> format=lambda row: '%s-%s-%s / %s'\
>
> %(row.num_part1.rstrip(),row.num_part2.rstrip(),row.num_part3.rstrip(),row.
> title.rstrip()))
>
> ### Controller ###
>
> @auth.requires_login()
> def create():
> if request.args(0) in ref_tables_list:
> redirection_argument=request.args(0)
> if en_ui_tables_names[request.args(0)]!=None :
> table_name = str.lower(en_ui_tables_names[request.args(0)])
> else:
> table_name = request.args(0).replace('ref_','')
> page_title=T('Form for : ')
> if auth.has_membership(auth.id_group('admin')):
> crud.settings.formstyle='divs'
> form = crud.create(db[request.args(0)])
> elif auth.has_membership(auth.id_group('technician')):
> crud.settings.formstyle='divs'
> form = crud.create(db[request.args(0)])
> elif auth.has_membership(auth.id_group('technician_c')):
> crud.settings.formstyle='divs'
> form = crud.create(db[request.args(0)])
> else:
> return
> dict(form=None,page_title=page_title,table_name=table_name,\
> not_allow_permission='you are not allow
> (permission)',permission_denied='Permission denied')
> if form.accepts(request.vars, session):
> response.flash = T('form accepted')
> redirect(URL(r=request, f='read/'+redirection_argument,args=
> form.vars.id))
> elif form.errors:
> response.flash = T('form has errors')
> else:
> response.flash = T('please fill out the form')
> return dict(form=form,page_title=page_title,table_name=table_name,\
> not_allow_permission=None,permission_denied=None)
> else:
> redirect(URL(request.application,'default','index'))
> session.flash = T('invalid request')
>
> Should I change something??
>
> Thanks for help
>
> Richard