Hello
I am trying to implement a custom form for SQLFORM.grid
When submit is clicked the data is not inserted. I think the problem is
when I validate form and the form.accepts is not triggered.
this is my controler
def workers():
#some code before but not relevant
grid_workers = SQLFORM.grid(query=query,
left=db.status.on(db.workers.w_status == db.status.id),
fields=fields, searchable=False, orderby=[db.workers.w_nick_name],
create=True,
deletable=False, editable=True, paginate=100,
buttons_placement='right',
showbuttontext=False,
links=links,
ui=dict(widget='',
header='',
content='',
default='',
cornerall='',
cornertop='',
cornerbottom='',
button='button btn btn-default',
buttontext='buttontext button',
buttonadd='icon plus icon-plus glyphicon
glyphicon-plus',
buttonback='icon leftarrow icon-arrow-left
glyphicon glyphicon-arrow-left',
buttonexport='icon downarrow icon-download
glyphicon glyphicon-download',
buttondelete='icon trash icon-trash
glyphicon glyphicon-trash',
buttonedit='icon pen icon-pencil glyphicon
glyphicon-pencil',
buttontable='icon rightarrow
icon-arrow-right glyphicon glyphicon-arrow-right',
buttonview='icon magnifier icon-zoom-in
glyphicon glyphicon-eye-open',
),
exportclasses=dict(csv=False, csv_with_hidden_cols=False,
html=False,
tsv_with_hidden_cols=False,json=False, tsv= False, xml = False))
def my_form_processing_new(form):
print "tukej111"
nick_name = form.vars.w_nick_name
workers = db((db.workers.w_organization == org) & (db.workers.w_nick_name
== nick_name) & (db.workers.w_status != 250)).select()
partner_id = form.vars.partner_id
if workers:
form.errors.w_nick_name = T('Worker with this nick name already
exists!')
if not partner_id or partner_id == '':
form.vars.partner_id = -1
def my_form_processing_edit(form):
#some code not relevant ATM
if (request.args) and (request.args[0] in ['new']):
print "juhu"
form = grid_workers.create_form
#grid_workers.element('[title=Back]').parent['_href'] = URL('settings',
'workers')
if form.accepts(request.vars, session, onvalidation=my_form_processing_new):
print "tukej"
session.flash = T('Worker inserted')
redirect(URL())
return dict(form = form, inactive_workers=query_inactive)
if (request.args) and (request.args[0] in ['edit']):
form = grid_workers.update_form
#grid_workers.element('[title=Back]').parent['_href'] = URL('settings',
'workers')
if form.accepts(request.vars, session, onvalidation =
my_form_processing_edit):
my_form_processing_edit(form)
session.flash = T('Worker updated')
redirect(URL())
return dict(form = form, inactive_workers=query_inactive)
return dict(grid_workers = grid_workers, inactive_workers=query_inactive)
and my view
<div class="col-md-12 " >
{{if ('new' in request.args) or ('edit' in request.args):}}
{{=form.custom.begin}}
Status: <div>{{=form.custom.widget.w_status}}</div>
First name: <div>{{=form.custom.widget.w_first_name}}</div>
Last name: <div>{{=form.custom.widget.w_last_name}}</div>
Nick name: <div>{{=form.custom.widget.w_nick_name}}</div>
E-mail: <div>{{=form.custom.widget.w_email}}</div>
Work type: <div>{{=form.custom.widget.w_work_type}}</div>
Month hour formula: <div>{{=form.custom.widget.w_hour_formula}}</div>
Work obligation (minutes):
<div>{{=form.custom.widget.w_day_obligation}}</div>
Partner ID : <div>{{=form.custom.widget.partner_id}}</div>
Comment: <div>{{=form.custom.widget.w_note}}</div>
<div>{{=form.custom.submit}}</div>
{{=form.custom.end}}
{{else:}}
{{=grid_workers}}
{{pass}}
</div>
So the if form.accepts(request.vars, session, onvalidation
=my_form_processing_new) does not happen and I believe therefore the data
is not inserted.
On create new record the print "juhu" happens but there is no further action
Any suggestions?
Thank you
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.