# -*- coding: utf-8 -*-
#
# Copyright (C) 2015 Avencall
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>

import logging

from flask import redirect
from flask import url_for
from flask.helpers import flash
from requests.exceptions import ConnectionError


logger = logging.getLogger(__name__)


def configure_error_handlers(app):

    @app.errorhandler(403)
    def page_not_authorized(error):
        flash(str(error), 'error')
        return redirect(url_for('login_admin.LoginAdmin:get'))

    @app.errorhandler(404)
    def page_not_found(error):
        flash(str(error), 'error')
        return redirect(url_for('login_admin.LoginAdmin:get'))

    @app.errorhandler(ConnectionError)
    def connection_error(error):
        logger.exception(ConnectionError)
        flash(str(error), 'error')
        return redirect(url_for('login_admin.LoginAdmin:get'))

    @app.errorhandler(Exception)
    def all_exception_handler(error):
        logger.exception(Exception)
        flash(str(error), 'error')
        return redirect(url_for('login_admin.LoginAdmin:get'))
