import logging from flask import request, abort as flask_abort, jsonify from auth.auth import get_authenticated_user, get_validated_token logger = logging.getLogger(__name__) DEFAULT_MESSAGE = {} DEFAULT_MESSAGE[400] = 'Invalid Request' DEFAULT_MESSAGE[401] = 'Unauthorized' DEFAULT_MESSAGE[403] = 'Permission Denied' DEFAULT_MESSAGE[404] = 'Not Found' DEFAULT_MESSAGE[409] = 'Conflict' def abort(status_code, message=None, **kwargs): message = (str(message) % kwargs if message else DEFAULT_MESSAGE.get(status_code, '')) # Add the user information. auth_user = get_authenticated_user() auth_token = get_validated_token() if auth_user: message = '%s (user: %s)' % (message, auth_user.username) elif auth_token: message = '%s (token: %s)' % (message, auth_token.friendly_name or auth_token.code) # Log the abort. logger.warning('Error %s: %s. Arguments: %s' % (status_code, message, request.view_args)) resp = jsonify({'error': message}) resp.status_code = status_code # Report the abort to the user. flask_abort(resp)