Hello,
I try to add to the ouput dict of the json expose method the result
of flash (so that my web integrator can have my business logic
warning/error/info automagically)
I wanted to know how to hook on @expose (in case json rendere is
called) in such a way I can alter the dict returned by the controller.
I have 90% of the results with the following code.
any hint ?
for instance imagine in the controller :
@expose('adcop.templates.lost_password')
@validate(validators= { 'email' : validators.Email } )
@expose('json')
@add_flash_to_outdict()
def lost(self, *a, **kw):
log = logging.getLogger("general")
email = kw.get('email')
if email is None:
flash("No email","error")
return dict(page = 'lost', fragment = fragment )
#....
here is the actual result :
{"fragment": false, "page": "lost", "_flash": {"status": "error",
"message": "No email"}}
in my a far away file I defined :
from tg import flash, decorators, expose, request
import logging
import json
log = logging.getLogger("general")
class add_flash_to_outdict(object):
def __init__(self, error_handler = None, **option ):
self.error_handler = error_handler
self.option = option or dict()
def __call__(self, func):
#@beaker_cache(expire=30,type = 'file')
import logging
log = logging.getLogger('general')
self.log = log
def dict_wrap(*args, **kw):
res = func(*args, **kw)
if flash and flash.message:
res["_flash"] = {
"status" : flash.status or "",
"message" : flash.message or ""
}
return json.dumps(res)
brutal = expose(content_type="application/json;charset='%s'" %
( request.charset or 'utf-8'))
return brutal(dict_wrap)
--
You received this message because you are subscribed to the Google Groups
"TurboGears" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/turbogears?hl=en.