aboutsummaryrefslogtreecommitdiffstats
path: root/browser/app.py
diff options
context:
space:
mode:
Diffstat (limited to 'browser/app.py')
-rw-r--r--browser/app.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/browser/app.py b/browser/app.py
new file mode 100644
index 0000000..1398e93
--- /dev/null
+++ b/browser/app.py
@@ -0,0 +1,69 @@
+from dotenv import load_dotenv
+load_dotenv()
+
+import os
+import sys
+import traceback
+import tempfile
+from flask import Flask, render_template
+from flask_compress import Compress # type: ignore
+
+from log_db import DB, Bound
+
+app = Flask(__name__)
+Compress(app)
+
+BASE_URL = os.environ["BASE_URL"]
+DB_DIR = os.environ["DB_DIR"] if "DB_DIR" in os.environ else tempfile.TemporaryDirectory().name
+
+print("""\n"""
+ f"""BASE_URL: {BASE_URL}\n"""
+ f"""DB_DIR: {DB_DIR}\n""")
+
+db = DB \
+ .configure() \
+ .data_dir(DB_DIR) \
+ .fields(["id", "name"]) \
+ .primary_key("id") \
+ .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)
+
+@app.get("/")
+def index():
+ return page_find()
+
+@app.get("/find")
+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",
+ field_names = ["id", "name"],
+ rows = rows,
+ )
+
+@app.get("/range")
+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",
+ field_names = ["id", "name"],
+ rows = rows,
+ )