49 lines
918 B
Python
49 lines
918 B
Python
|
"""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
|