Source code for app.decorators
from app.extensions import db
from functools import wraps
[docs]
def transactional(fn):
"""
Decorate controllers whose DB operations should be performed in one transaction
Example::
@bp.route("/members", method=["POST"])
@transactional
def create_member():
...
"""
@wraps(fn)
def wrapper(*args, **kwargs):
try:
r = fn(*args, **kwargs)
db.session.commit()
except Exception as e:
db.session.rollback()
raise
return r
return wrapper