Add support for passing status_code or getting it from request

This commit is contained in:
Endre Karlson 2013-03-26 23:35:27 +00:00
parent 59a3123cde
commit 2a1e50e6ef

View File

@ -43,13 +43,25 @@ def signature(*args, **kw):
caller, falling back to json''') caller, falling back to json''')
dataformat = wsme.rest.json dataformat = wsme.rest.json
try: try:
status_code = None
result = f(*args, **kwargs)
# Status code in result
if isinstance(result, (list, tuple)) and len(result) == 2:
result, status_code = result
# Status code is attached to request
if not status_code and hasattr(flask.request, 'status_code'):
status_code = flask.request.status_code
res = flask.make_response( res = flask.make_response(
dataformat.encode_result( dataformat.encode_result(
f(*args, **kwargs), result,
funcdef.return_type funcdef.return_type
) )
) )
res.mimetype = dataformat.content_type res.mimetype = dataformat.content_type
res.status_code = status_code or 200
except: except:
data = wsme.api.format_exception(sys.exc_info()) data = wsme.api.format_exception(sys.exc_info())
res = flask.make_response(dataformat.encode_error(None, data)) res = flask.make_response(dataformat.encode_error(None, data))