2013-12-17 14:41:30 +00:00
|
|
|
# Part of accounting-api project:
|
|
|
|
# https://gitorious.org/conservancy/accounting-api
|
|
|
|
# License: AGPLv3-or-later
|
|
|
|
|
2013-12-10 23:25:16 +00:00
|
|
|
from functools import wraps
|
|
|
|
|
|
|
|
from flask import jsonify
|
|
|
|
|
|
|
|
from accounting.exceptions import AccountingException
|
|
|
|
|
|
|
|
|
|
|
|
def jsonify_exceptions(func):
|
|
|
|
'''
|
|
|
|
Wraps a Flask endpoint and catches any AccountingException-based
|
|
|
|
exceptions which are returned to the client as JSON.
|
|
|
|
'''
|
|
|
|
@wraps(func)
|
|
|
|
def wrapper(*args, **kw):
|
|
|
|
try:
|
|
|
|
return func(*args, **kw)
|
|
|
|
except AccountingException as exc:
|
|
|
|
return jsonify(error=exc)
|
|
|
|
|
|
|
|
return wrapper
|