diff options
| author | Jan Tuomi <jan@jantuomi.fi> | 2025-02-11 12:12:37 +0200 |
|---|---|---|
| committer | Jan Tuomi <jan@jantuomi.fi> | 2025-02-11 12:13:00 +0200 |
| commit | e8f3a470ce693bef9303d3dd4c46523cdc691826 (patch) | |
| tree | d5d33eb96de070ccfa2b138295b623a8516cf7ad /browser/app.py | |
| parent | cc07b3fdc4b8860a1ee1b25f09039ba3f13ee509 (diff) | |
Add structure, introduce progressive enhancement
Diffstat (limited to 'browser/app.py')
| -rw-r--r-- | browser/app.py | 34 |
1 files changed, 16 insertions, 18 deletions
diff --git a/browser/app.py b/browser/app.py index 1398e93..ebe590d 100644 --- a/browser/app.py +++ b/browser/app.py @@ -5,7 +5,7 @@ import os import sys import traceback import tempfile -from flask import Flask, render_template +from flask import Flask, render_template, request from flask_compress import Compress # type: ignore from log_db import DB, Bound @@ -28,21 +28,19 @@ db = DB \ .secondary_keys(["name"]) \ .initialize() -def error_page(message: str, code: int = 400): - return render_template("error.html.j2", error = message), code - -@app.errorhandler(404) -def not_found(e: Exception): - return error_page("Not found", 404) - -@app.errorhandler(405) -def method_not_allowed(e: Exception): - return error_page(str(e), 405) - @app.errorhandler(Exception) def error_handler(e: Exception): - traceback.print_exception(e, file=sys.stderr) - return error_page("Internal server error", 500) + if e.code >= 500: # type: ignore + traceback.print_exception(e, file=sys.stderr) + error_text = "Internal Server Error" + else: + error_text = str(e) + + htmz_target = request.form.get("htmz") + if htmz_target: + return render_template("frag_error.html.j2", error = error_text, container = htmz_target) + else: + return render_template("page_error.html.j2", error = error_text) @app.get("/") def index(): @@ -52,8 +50,8 @@ def index(): def page_find(): rows = db.range_by("id", Bound.unbounded(), Bound.unbounded(), limit=100) - return render_template('index.html.j2', - selected_form = "form_find.html.j2", + return render_template('page_main.html.j2', + selected_form = "frag_form_find.html.j2", field_names = ["id", "name"], rows = rows, ) @@ -62,8 +60,8 @@ def page_find(): def page_range(): rows = db.range_by("id", Bound.unbounded(), Bound.unbounded(), limit=100) - return render_template('index.html.j2', - selected_form = "form_range.html.j2", + return render_template('page_main.html.j2', + selected_form = "frag_form_range.html.j2", field_names = ["id", "name"], rows = rows, ) |
