accpets takes two arguments

onvalidation=lambda form: None
onaccept=lambda form: None

onvalidation is run after validation before insert/update/delete
onaccept is done after insert/update/delete before redirection

It it technically possible to make onaccept point to a function that
does some checks and then eventuall calls db.rollback(). I
definitively advice against that. I think you constraints must be
checked before insert/update/delete. That is what onvalidation is for.

You validation takes the form and if you want to block the subsequent
insert/update/delete simply add an error to form.errors explaining the
problem. Example:

def algorithm(form):
    if form.vars.a!=form.vars.b:
        form.errors.b='should be the same as a"

form.accepts(request.vars,onvalidation=lambda form: algorithm(form))








On Jun 6, 5:52 pm, weheh <richard_gor...@verizon.net> wrote:
> I'm doing the following:
>         if form.accepts(request.vars,session,onvalidation=my_val):
>                 session.flash='success'
>                 redirect(URL(r=request,f='newpage'))
>         elif form.errors:
>                 response.flash='error'
>
> I'm wondering if the data are committed to the db before my_val gets
> executed or only afterwards? In other words, if my_val does a db
> query, will it find already in the db the data from the form?
>
> If no, what if the form acceptance depends on checking the interaction
> between the data already in the db and data on the form?
>
> In essence, I want to write the form data to the db, run an algo, then
> decide whether to rollback the db. I think I'm really close to the
> answer, but I'm not sure what the right way is to do this. Anyone have
> a simple example?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to