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

Reply via email to