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

Reply via email to