> > if ((request.vars._formname<>None) and > (request.vars._formname.rfind('opinion_')>-1)): >
You don't have to explicitly check for not equal to None -- if it is None, it will evaluate to false. Also, does the formname start with "opinion_" -- if so, use .startswith(): if request.vars._formname and request.vars._formname.startswith('opinion_'): > f = SQLFORM(db.lecture_item_opinions) > f.vars.lecture_id=lecture.id > f.vars.lecture_item_id=request.vars._formname.rsplit('_')[1] > f.vars.user_id=auth.user_id > if f.process(formname=request.vars._formname).accepted: > session.flash = 'Thank you for your opinion > '+request.vars._formname > If you're not redirecting, use response.flash instead of session.flash. You can also just pass the message to .process(): f.process(formname=request.vars, message_onsuccess='Thank you for your opinion %s' % request.vars. _formname) > elif f.process(formname=request.vars._formname).errors: > response.flash = 'errors' > Don't process the form again. Once it has been processed, just check for errors: elif f.errors: or even better, just pass the error message to .process(): f.process(formname=request.vars, message_onsuccess='Thank you for your opinion %s' % request.vars. _formname, message_onfailure='errors') Anthony