Hello, In the book there is this example :
db.define_table('numbers', Field('a', 'integer'), Field('b', 'integer'), Field('c', 'integer', readable=False, writable=False)) def my_form_processing(form): c = form.vars.a * form.vars.b if c < 0: form.errors.b = 'a*b cannot be negative' else: form.vars.c = c def insert_numbers(): form = SQLFORM(db.numbers) if form.process(onvalidation=my_form_processing).accepted: session.flash = 'record inserted' redirect(URL()) return dict(form=form) Where "my_form_processing" function is called without bracket and arguments... I try to do this that failed : def my_form_processing(table_name, form): form.vars.field1 = table_name # I know useless, it just demonstration for purpose of my question... ... if form.process(onvalidation=my_form_processing(request.args(0), form)).accepted: Then I did : def my_form_processing(form): form.vars.field1 = request.args(0) ... if form.process(onvalidation=my_form_processing).accepted: That actually works... I would like to make sure that I understand onvalidation properly... Is "my_form_processing" just a extension of the "insert_numbers()" function? And if so, does it have access to all the same variables (environnement) of "inser_numbers()"?? Thank you! Richard