tmpl-flask/flaskapp/errors.py

49 lines
918 B
Python
Raw Normal View History

"""Flask app error handlers"""
from pathlib import Path
from flask import Flask
from flask import render_template
# Add other HTTP error codes here
CODES = [404, 500]
def add_routes(app: Flask) -> None:
"""Add all error handlers
Args:
app (Flask): Flask application
"""
tmpl_dir = app.template_folder
if tmpl_dir is None:
return
tmpl = Path(__file__).parent / tmpl_dir
for code in CODES:
add_handler(app, tmpl, code)
def add_handler(
app: Flask,
tmpl: Path,
code: int) -> None:
"""Add Flask app error handler.
Only for internal use
Args:
app (Flask): Flask application
file (str): Template filename
code (int): Error code
"""
file = f'{code}.html'
if (tmpl / file).exists():
@app.errorhandler(code)
def handler(_e):
return render_template(file), code