As I pass it as vars via LOAD: {{=LOAD('default', 'send_suggestion', vars={ 'c':request.controller, 'f':request.function, 'args':request.args, 'vars':request.vars}, ajax_trap=True)}}
does it mean that request.vars has not been serialized/deserialized correctly ? On Thu, May 17, 2012 at 2:14 AM, Massimo Di Pierro < massimo.dipie...@gmail.com> wrote: > _vars = request.vars['vars'] or {} > subject = 'FEEDBACK: %s' % URL(c=_c,f=_f,args=_args,vars=**_vars) ##### > <---- vars doesn't like Storage > > _vars is a string. You are trying to pass a string where it expects a > dict() > > On Wednesday, 16 May 2012 18:01:13 UTC-5, sebastian wrote: >> >> Hi All, >> >> I'd like to add a feedback form in layout.html so that the users can >> click on it on whatever page they are and send a message to the site admin. >> To be useful, the form must include the current page and vars so that the >> admin can click on a link and go to exactly the same place where the user >> wrote the feedback from. >> >> in layout I've added >> >> {{=LOAD('default', >> 'send_suggestion', >> vars={ 'c':request.controller, >> 'f':request.function, >> 'args':request.args, >> 'vars':request.vars}, >> ajax_trap=True)}} >> >> in default.py >> >> def send_suggestion(): >> form = SQLFORM.factory( >> Field('message', 'text', requires=IS_NOT_EMPTY()) >> ) >> >> if form.process().accepted: >> _c = request.vars['c'] >> _f = request.vars['f'] >> _args = request.vars['args'] or [] >> _vars = request.vars['vars'] or {} >> subject = 'FEEDBACK: %s' % URL(c=_c,f=_f,args=_args) ####**# >> <---- it works >> subject = 'FEEDBACK: %s' % URL(c=_c,f=_f,args=_args,vars=**_vars) >> ##### >> <---- vars doesn't like Storage >> response.flash = 'Thanks for your feedback' >> # will send email >> >> >> return form >> >> >> The problem is that URL *vars* doesn't like storage... >> >> >> Traceback (most recent call last): >> >> >> >> File "/home/sebas/dev/web2py/**peerservices/gluon/restricted.**py", line >> 205, in restricted >> >> >> >> exec ccode in environment >> >> >> >> File >> "/home/sebas/dev/web2py/**peerservices/applications/**peerservices/controllers/**default.py" >> >> <http://localhost:8000/admin/default/edit/peerservices/controllers/default.py>, >> line 370, in <module> >> >> >> >> File "/home/sebas/dev/web2py/**peerservices/gluon/globals.py"**, line 173, >> in <lambda> >> >> >> >> self._caller = lambda f: f() >> >> >> >> File >> "/home/sebas/dev/web2py/**peerservices/applications/**peerservices/controllers/**default.py" >> >> <http://localhost:8000/admin/default/edit/peerservices/controllers/default.py>, >> line 301, in send_suggestion >> >> >> >> subject = 'FEEDBACK: %s' % URL(c=_c,f=_f,args=_args,vars=**_vars) >> >> >> >> File "/home/sebas/dev/web2py/**peerservices/gluon/html.py", line 290, in >> URL >> >> >> >> if vars.has_key('_signature'): vars.pop('_signature') >> >> >> AttributeError: 'str' object has no attribute 'has_key' >> >> >> >> Any better way than converting the Storage into dict ? >> >> thanks >> -- >> Sebastian E. Ovide >> >> >> >> >> -- Sebastian E. Ovide