Hi Kevin Thanks for your input! This is a valuable solution. But I would still need to add all my already existing validators to SQLFORM.factory. Wouldn't I? Therefore I tried Massimo's solution first.
Best regards, Marcel On 20 Mrz., 15:43, Kevin Ivarsen <kivar...@gmail.com> wrote: > Massimo's method may be better -- I haven't personally experimented with the > restful stuff yet. > > But you can still use SQLFORM or SQLFORM.factory with form.accepts() to run > the validators. You just don't display the form anywhere if you don't need > to. You also need to pass formname=None to accepts(). Doing this, > form.accepts() will run your values through the validators, transform them > as needed, and populate form.errors based on the GET and POST variables > provided by whatever is calling your web service. > > Here's a simple example I cobbled together that adds two numbers. Example > use:http://localhost:8000/app/controller/add?val1=3.14&val2=2.718 > > def add(): > form = SQLFORM.factory( > Field('val1', 'double', requires=IS_FLOAT_IN_RANGE(0, 10)), > Field('val2', 'double', requires=IS_FLOAT_IN_RANGE(0, 10)) > ) > > if form.accepts(request.vars, formname=None): > return form.vars.val1 + form.vars.val2 > > else: > errors = "Errors:\n" > for fieldname in form.errors: > errors += "%s: %s\n" % (fieldname, form.errors[fieldname]) > > raise HTTP(400, errors) > > Cheers, > Kevin