import logging import json from flask import make_response, jsonify from app import app from util.useremails import CannotSendEmailException from util.config.provider.baseprovider import CannotWriteConfigException from flask.ext.restful.utils.cors import crossdomain from data import model logger = logging.getLogger(__name__) @app.errorhandler(model.DataModelException) def handle_dme(ex): logger.exception(ex) response = jsonify({'message': ex.message}) response.status_code = 400 return response @app.errorhandler(CannotSendEmailException) def handle_emailexception(ex): message = 'Could not send email. Please contact an administrator and report this problem.' response = jsonify({'message': message}) response.status_code = 400 return response @app.errorhandler(CannotWriteConfigException) def handle_configexception(ex): message = ('Configuration could not be written to the mounted volume. \n' + 'Please make sure the mounted volume is not read-only and restart ' + 'the setup process. \n\nIssue: %s' % ex) response = jsonify({'message': message}) response.status_code = 400 return response @app.errorhandler(model.TooManyLoginAttemptsException) @crossdomain(origin='*', headers=['Authorization', 'Content-Type']) def handle_too_many_login_attempts(error): msg = 'Too many login attempts. \nPlease reset your Quay password and try again.' response = make_response(msg, 429) response.headers['Retry-After'] = int(error.retry_after) return response