I believe it would be better to strip out all your form validation logic
and put this into a separate 'onvalidation' function.
See the book: http://web2py.com/books/default/chapter/29/07#onvalidation
On Friday, October 5, 2012 6:17:57 PM UTC+1, Andrew Evans wrote:
>
> Hello I am trying to make a controller function upon submission of the
> form validate against existing entries in the database
>
> *this is the function:*
>
> @auth.requires(auth.has_membership('second_year') or
> auth.has_membership('admin'))
> def second_year_checkout():
> check_id = request.args(0)
> check = db(db.product.id == check_id).select()
> project_date = db(db.checkout.id>0).select()
> for valid in check:
> db.checkout.product.default=valid.id
> form = SQLFORM(db.checkout)
> if form.process().accepted:
> for project in project_date:
> start = project.date_in
> end = project.date_out
> user_start =
> datetime.datetime.strptime(request.vars.date_in, '%Y-%m-%d').date()
> user_end =
> datetime.datetime.strptime(request.vars.date_out, '%Y-%m-%d').date()
> if start <= user_start <= end or start <= user_end <=
> end:
> session.flash = 'Those dates have been reserved for
> that item, please try another'
> return dict(form=form)
> else:
> session.flash = 'form accepted'
> return redirect(URL('default', 'next'))
> elif form.errors:
> response.flash = 'form has errors'
> else:
> response.flash = 'please fill the form'
> return dict(form=form)
>
> what I am hoping to accomplish is have this if statement work in that
> function (basically exit out of form submission)
>
> if start <= user_start <= end or start <= user_end <=
> end:
> session.flash = 'Those dates have been reserved for
> that item, please try another'
> return dict(form=form)
> else:
> session.flash = 'form accepted'
> return redirect(URL('default', 'next'))
>
> any idea how I can rewrite my controller function to validate using that
> statement
>
> *cheers
>
> and ty
>
--