#! /usr/bin/env python # -*- coding: utf-8 -*- # jarr - A Web based news aggregator. # Copyright (C) 2010-2016 Cédric Bonhomme - https://www.cedricbonhomme.org # # For more information : https://github.com/JARR-aggregator/JARR # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero 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 Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . __author__ = "Cedric Bonhomme" __version__ = "$Revision: 5.3 $" __date__ = "$Date: 2010/01/29 $" __revision__ = "$Date: 2014/08/27 $" __copyright__ = "Copyright (c) Cedric Bonhomme" __license__ = "AGPLv3" import logging from flask import (request, render_template, flash, url_for, redirect, current_app) from flask.ext.babel import gettext from conf import API_ROOT from web.lib.view_utils import etag_match logger = logging.getLogger(__name__) @current_app.errorhandler(401) def authentication_required(error): if API_ROOT in request.url: return error flash(gettext('Authentication required.'), 'info') return redirect(url_for('login')) @current_app.errorhandler(403) def authentication_failed(error): if API_ROOT in request.url: return error flash(gettext('Forbidden.'), 'danger') return redirect(url_for('login')) @current_app.errorhandler(404) def page_not_found(error): return render_template('errors/404.html'), 404 @current_app.errorhandler(500) def internal_server_error(error): return render_template('errors/500.html'), 500 @current_app.errorhandler(AssertionError) def handle_sqlalchemy_assertion_error(error): return error.args[0], 400 @current_app.route('/about', methods=['GET']) @etag_match def about(): return render_template('about.html')