>
> 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