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