Your ifs are not properly nested but I think you want:

if form.accepts(request.vars, session):
    #code to insert the record here
elif form.errors:
    response.flash = 'Form has errors'

And why are you using factory?.
If you want to have control over the DB insertion do:

form = SQLFORM(db.traveler_template,record=record,dbio=False)

and then you have to do the insert (and presumably other stuff) inside
your accepts.


On Feb 28, 4:17 pm, Lennon <lpru...@hotmail.com> wrote:
> I think I must be missing something obvious.
>
> The form displays correctly and populates with the record/data that I
> want it to populate with.  But when I hit the submit button, it won't
> run the code under "if form.accepts".  It just reloads the page with
> the same form and record and no insert has been done or error message
> given.
>
> rows = db(db.traveler_template.user_id == session.user['id']).select()
> record = rows[0]
> form = SQLFORM.factory(db.traveler_template,record=record)
>
> if form.accepts(request.vars, session):
>         #check whether the form had errors
>         if form.errors:
>             response.flash = 'Form has errors'
>             return dict(form=form)
>         else:
>            #insert the record
>            | Insert Code Omitted |
>
> return dict(form=form)
>
> I also tried
>
> if form.accepts(request.vars):
>
> to no avail.
>
> Also, I'm using the {{=form.custom.begin}} type syntax to display the
> form.  Could that have something to do with it?

Reply via email to