Nicer error formatting

This commit is contained in:
Joseph Schorr 2014-01-24 15:17:00 -05:00
parent 229eeec1be
commit 4cea2a6449

View file

@ -2,31 +2,29 @@ import logging
from flask import request, abort as flask_abort, make_response from flask import request, abort as flask_abort, make_response
from auth.auth import process_auth, extract_namespace_repo_from_session, get_authenticated_user, get_validated_token from auth.auth import process_auth, extract_namespace_repo_from_session, get_authenticated_user, get_validated_token
from werkzeug.exceptions import HTTPException
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
DEFAULT_MESSAGE = {} DEFAULT_MESSAGE = {}
DEFAULT_MESSAGE[400] = 'Invalid Request' DEFAULT_MESSAGE[400] = 'Invalid Request'
DEFAULT_MESSAGE[403] = 'Forbidden' DEFAULT_MESSAGE[403] = 'Permission Denied'
DEFAULT_MESSAGE[404] = 'Not Found' DEFAULT_MESSAGE[404] = 'Not Found'
def abort(status_code, message=None, **kwargs): def abort(status_code, message=None, **kwargs):
if status_code == 403 and not message: message = message % kwargs if message else DEFAULT_MESSAGE[status_code]
# Create a default error message for auth failure.
message = 'Forbidden. ' if status_code == 403:
# Add the user information.
auth_user = get_authenticated_user() auth_user = get_authenticated_user()
auth_token = get_validated_token() auth_token = get_validated_token()
if auth_user: if auth_user:
message = message + 'Current user: ' + auth_user.username message = '%s (user: %s)' % (message, auth_user.username)
elif auth_token: elif auth_token:
message = message + 'Current token: ' + auth_token.friendly_name or auth_token.code message = '%s (token: %s)' % (message, auth_token.friendly_name or auth_token.code)
message = message % kwargs if message else DEFAULT_MESSAGE[status_code]
# Log the abort. # Log the abort.
logger.error('Error %s: %s. Arguments: %s' % (status_code, message, request.view_args)) logger.error('Error %s: %s. Arguments: %s' % (status_code, message, request.view_args))
# Report the abort to the user. # Report the abort to the user.
flask_abort(make_response(HTTPException(message), status_code, {})) flask_abort(make_response(message, status_code, {}))