If you want to check the credit card before accepting the form and
inserting the record into the db, you might consider an
onvalidation<http://web2py.com/books/default/chapter/29/07#onvalidation>function
instead. Otherwise, if you just want to add an error message to a
particular form field, you can do form.errors.fieldname = 'error message'.
You might consider delivering a different error message depending on
whether the card is declined or there is some other exception thrown when
running the make_payment code.
Anthony
On Wednesday, January 23, 2013 10:16:57 PM UTC-5, Ragtime AllTime wrote:
>
> I think I may be going about this wrong, but I want to throw new form
> errors if something happens after doing form.accepts(...). I'm not using
> SQLFORM or CRUD, just the FORM().
>
> The scenario is something like this: The user enters payment information
> correctly, but when I charge the card, the card is returned declined. Then,
> the form should display an error saying that there are errors with the card
> and present the user with the form again, as though validation had failed.
> The same flow would go with emailing the user too.
>
>
> form = FORM(...)
>
> if form.accepts(request, session):
> try:
> makePayment(....)
> redirect(URL('successful_payment')) # Redirect after success
> except ...
> # Display Errors on form here and show the form to the user.
>
> elif form.errors: # Validation has failed
> response.flash = 'form has errors'
>
>
>
> What would go in the except block?
>
--