Actually, you don't need to use SQLFORM at all to take advantage of validation. Instead, you can do: db.table.validate_and_insert(...) # to insert new record or db(query).validate_and_update(...) # to update an existing record (Note, the above is not in the book yet.) Also, if you want to use form.accepts but don't want it to save or check the unique _formkey in session, then just don't pass session to accepts(): form.accepts(request.vars) # notice no 'session' Anthony
On Friday, August 19, 2011 8:46:57 AM UTC-4, stoyan wrote: > Dear fellow w2peers, I would like to make use of the db validators > through an sqlform, but without having user interaction. Code speaks > best: > > logs = [ ] > for line in file('my_input_file.txt').readlines(): > name,age = line.split(',') > form = SQLFORM(db.person) > request.vars.name = name > request.vars.age = age > if form.accepts(request.vars, session, > onvalidate=validate_person): > logs.append('record updated') > elif form.errors: > logs.append('errors in form') > else: > logs.append("I keep ending up here each time I call this > controller") > return dict(logs='</br>'.join(logs)) > > > I also tried the following and got the same result as above: > ... > form.vars.name = name > form.vars.age = age > if form.accepts(form.vars, ... > > My wild guess is that SQLFORM does not allow this because of security > concerns: the form's hidden fields do not match the session. Is there > a way around this? > > My requirement is to be able to process the input file and populate/ > update the persons table accordingly while validating the input > parameters with the table's validators and the form's onvalidate > method. All of this is done in one go from a single controller. > > Any help/recommendations will be greatly appreciated. > > Thanks, > Stoyan.