Thanks! Removing "required=True" solved the problem...
Richard On Tue, Mar 22, 2011 at 2:38 PM, Massimo Di Pierro < [email protected]> wrote: > 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 >

