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

Reply via email to