示例#1
0
    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)
示例#3
0
    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)
示例#6
0
                    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)