Skip to content
Snippets Groups Projects
app.py 32.8 KiB
Newer Older
@app.route('/_warmup')
def warmup():
    fetch_news_items()
    fetch_events()
    for supporter in fetch_supporters():
        hash = hashlib.md5(supporter['email'].encode('utf-8')).hexdigest()
        try:
            fetch_gravatar(
                hash, s='198', d=gravatar.default, r=gravatar.rating)
        except Exception:
            app.logger.warning('fail to fetch gravatar')
Cédric Krier's avatar
Cédric Krier committed
    for path in glob.glob(os.path.join(app.static_folder, '**/*.webp')):
        dominant_color(os.path.relpath(path, app.static_folder))
@app.errorhandler(HTTPStatus.NOT_FOUND)
@cache.cached(key_prefix=cache_key_prefix_view)
@add_links(PRECONNECT_HEADERS + JS_LINK_HEADERS + CSS_LINK_HEADERS)
def not_found(error):
    return render_template(
        'not_found.html', canonical=None), HTTPStatus.NOT_FOUND
class RequestFormatter(logging.Formatter):
    def format(self, record):
        record.url = request.url
        record.remote_addr = request.remote_addr
        return super().format(record)


mail_handler = SMTPHandler(
    mailhost='mx.tryton.org',
    fromaddr='www@tryton.org',
    toaddrs=['webmaster@tryton.org'],
    subject="[www.tryton.org] Application Error",
    )
mail_handler.setLevel(logging.ERROR)
formatter = RequestFormatter(
    '[%(asctime)s] %(remote_addr)s requested %(url)s\n'
    '%(levelname)s in %(module)s: %(message)s'
    )
default_handler.setFormatter(formatter)
mail_handler.setFormatter(formatter)

Cédric Krier's avatar
Cédric Krier committed
if __name__ == '__main__':
    app.config['CDN_DEBUG'] = ast.literal_eval(
        os.environ.get('CDN_DEBUG', 'True'))
    app.run(
        debug=ast.literal_eval(os.environ.get('DEBUG', 'True')),
        extra_files=[
            'templates/*.html',
            'templates/events/*.html',
            'templates/guidelines/*.html',
            'templates/service_providers/*.html',
            'templates/success_stories/*.html',
Cédric Krier's avatar
Cédric Krier committed
            ])

if not app.debug:
    app.logger.addHandler(mail_handler)