def expose_wrapper(func): if mark_only: func.exposed = True return func def func_wrapper(*args, **kw): if methods and cherrypy.request.method.upper() not in methods: raise cherrypy.HTTPError(405) res = func(*args, **kw) if format == 'json' or (allow_json and 'allow_json' in cherrypy.request.params): cherrypy.response.headers['Content-Type'] = 'text/javascript' return simplejson.dumps(res) elif format == 'jsonp' and 'callback' in cherrypy.request.params: cherrypy.response.headers['Content-Type'] = 'text/javascript' return '%(function)s(%(data)s);' % { 'function': cherrypy.request.params['callback'], 'data': simplejson.dumps(res) } ct = cherrypy.response.headers['Content-Type'] = content_type or cherrypy.response.headers.get('Content-Type', 'text/html') if ct.startswith('text/') and 'charset' not in ct: cherrypy.response.headers['Content-Type'] = ct + '; charset=utf-8' if isinstance(res, dict): try: _template = load_template(res['cp_template']) except: _template = load_template(template) if _template: from openobject.widgets import Widget, OrderedSet from openobject.widgets import js_i18n res['widget_css'] = css = OrderedSet() res['widget_javascript'] = js = {} jset = js.setdefault('head', OrderedSet()) jset.add_all([js_i18n]) for value in res.itervalues(): if isinstance(value, Widget): css.add_all(value.retrieve_css()) for script in value.retrieve_javascript(): jset = js.setdefault(script.location or 'head', OrderedSet()) jset.add(script) return render_template(_template, res).encode("utf-8") if not isinstance(res, basestring): return unicode(res).encode("utf-8") return res return utils.decorated(func_wrapper, func, exposed=True)
def wrapper(func): def func_wrapper(*args, **kw): tg_errors = getattr(cherrypy.request, 'validation_errors', None) if tg_errors: kw['tg_errors'] = tg_errors return handler(*args, **kw) return func(*args, **kw) return decorated(func_wrapper, func)
try: value = kw.copy() kw.update(validators.to_python(value, None)) except Invalid, e: errors = e.unpack_errors() cherrypy.request.validation_exception = e cherrypy.request.validation_value = value cherrypy.request.validation_errors = errors cherrypy.request.input_values = kw.copy() cherrypy.request.validation_state = True args, kw = from_kw(func, args, kw) return func(*args, **kw) return decorated(func_wrapper, func) return validate_wrapper def error_handler(handler): def wrapper(func): def func_wrapper(*args, **kw): tg_errors = getattr(cherrypy.request, 'validation_errors', None) if tg_errors: kw['tg_errors'] = tg_errors return handler(*args, **kw) return func(*args, **kw)
def expose_wrapper(func): if mark_only: func.exposed = True return func def func_wrapper(*args, **kw): if methods and cherrypy.request.method.upper() not in methods: raise cherrypy.HTTPError(405) res = func(*args, **kw) if format == 'json' or (allow_json and 'allow_json' in cherrypy.request.params): cherrypy.response.headers['Content-Type'] = 'text/javascript' return simplejson.dumps(res) elif format == 'jsonp' and 'callback' in cherrypy.request.params: cherrypy.response.headers['Content-Type'] = 'text/javascript' return '%(function)s(%(data)s);' % { 'function': cherrypy.request.params['callback'], 'data': simplejson.dumps(res) } ct = cherrypy.response.headers[ 'Content-Type'] = content_type or cherrypy.response.headers.get( 'Content-Type', 'text/html') if ct.startswith('text/') and 'charset' not in ct: cherrypy.response.headers[ 'Content-Type'] = ct + '; charset=utf-8' if isinstance(res, dict): try: _template = load_template(res['cp_template']) except: _template = load_template(template) if _template: from openobject.widgets import Widget, OrderedSet from openobject.widgets import js_i18n res['widget_css'] = css = OrderedSet() res['widget_javascript'] = js = {} jset = js.setdefault('head', OrderedSet()) jset.add_all([js_i18n]) for value in res.itervalues(): if isinstance(value, Widget): css.add_all(value.retrieve_css()) for script in value.retrieve_javascript(): jset = js.setdefault(script.location or 'head', OrderedSet()) jset.add(script) return render_template(_template, res).encode("utf-8") if not isinstance(res, basestring): return unicode(res).encode("utf-8") return res return utils.decorated(func_wrapper, func, exposed=True)