etiquette/frontends/etiquette_flask/backend/decorators.py

26 lines
801 B
Python
Raw Normal View History

2021-01-05 20:43:39 +00:00
import flask; from flask import request
import functools
import werkzeug.datastructures
2021-01-05 20:43:39 +00:00
from voussoirkit import flasktools
import etiquette
def catch_etiquette_exception(function):
'''
If an EtiquetteException is raised, automatically catch it and convert it
2018-09-23 21:57:25 +00:00
into a json response so that the user isn't receiving error 500.
'''
@functools.wraps(function)
def wrapped(*args, **kwargs):
try:
return function(*args, **kwargs)
except etiquette.exceptions.EtiquetteException as exc:
if isinstance(exc, etiquette.exceptions.NoSuch):
status = 404
else:
status = 400
2022-03-15 20:48:07 +00:00
response = flasktools.json_response(exc.jsonify(), status=status)
flask.abort(response)
return wrapped