Thanks, Massimo. I think I understand what I have to do, now. In the
onvalidation script I have to retrieve the db and then add or modify
the record that's represented by the form data. Then I can process the
information to determine whether the form is to be accepted. It'll
take a little doing, but shouldn't be too hard.

On Jun 6, 7:52 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
> 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?- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
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