def validate(validation_class, silent=not settings.DEBUG):
def decorator(fun):
@functools.wraps(fun)
def wrapper(*a, **kw):
if flask.request.method == 'GET':
p = {k: v for k, v in flask.request.values and flask.request.values.items() or {}}
else:
try:
p = flask.request.data and json.loads(flask.request.data.decode())
except Exception:
raise exceptions.WrongParametersException
if silent:
try:
validation_class(p)
except PyCombValidationError:
raise exceptions.WrongParametersException
else:
validation_class(p)
return fun(*a, params=p, **kw)
return wrapper
return decorator
评论列表
文章目录