I agree with you that having three ways to do the same thing is not good but:
There are three reasons: 1) some people may want to validate without processing the form fully (no insert). shortcut to accepts(...dbio=True) 2) it allows to write onliners: form = SQLFORM(....).process() 3) no longer need to pass request and session. see process() replacing accepts() and I see validate() as a way to check if form validates without insertion. There are also some different defaults. If you do not pass a session to accepts(...) you do not get CRSF protection. In process(...) you must pass session=None explicitly to disable RSCF protection. We can talk more about these.... pros, cons, etc. These functions have been in web2py for a while. We just made them work better. On Aug 15, 12:25 am, pbreit <pbreitenb...@gmail.com> wrote: > I'm not totally clear on the gain here. Is it that flash messages get > automatically set? Is this going to splinter implementations (ie some will > use .accepts, some will use .process, others will use .validate)? Is that a > good thing?