diff options
author | Frederick Yin <fkfd@fkfd.me> | 2021-10-24 23:36:37 +0800 |
---|---|---|
committer | Frederick Yin <fkfd@fkfd.me> | 2021-10-24 23:36:37 +0800 |
commit | 46e8097001aa29c27a5acce59f5c2ad83e850630 (patch) | |
tree | a726e1005f779b1d2b26d8d2684cce1f02bde876 /jimbrella/admin.py | |
parent | 9e4d79512d31e960e9730da61d9b31785478df93 (diff) |
Separate admin routes to a blueprint
Because modularity
Diffstat (limited to 'jimbrella/admin.py')
-rw-r--r-- | jimbrella/admin.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/jimbrella/admin.py b/jimbrella/admin.py new file mode 100644 index 0000000..df751ee --- /dev/null +++ b/jimbrella/admin.py @@ -0,0 +1,52 @@ +from flask import Blueprint, request, render_template, redirect, url_for +from user_agents import parse as user_agent +from .database import Database +from .config import * + +bp = Blueprint("admin", __name__, url_prefix="/admin") +db = Database(DATABASE_PATH) + + +@bp.route("/") +def index(): + umbrellas = db.read() + statuses = Database.group_by_status(umbrellas) + return render_template( + "admin/index.html", + umbrellas=umbrellas, + available=statuses["available"], + lent=statuses["lent"], + overdue=statuses["overdue"], + mobile=user_agent(request.user_agent.string).is_mobile, + ) + + +@bp.route("/umbrellas") +def umbrellas(): + umbrellas = db.read() + edit = request.args.get("edit") + return render_template( + "admin/umbrellas.html", + umbrellas=umbrellas, + edit=int(edit) if edit else None, + mobile=user_agent(request.user_agent.string).is_mobile, + ) + + +@bp.route("/umbrellas/edit", methods=["POST"]) +def umbrellas_edit(): + data = {} + for key in [ + "serial", + "alias", + "status", + "tenant_name", + "tenant_id", + "tenant_phone", + "tenant_email", + "lent_at", + ]: + data[key] = request.form.get(key) + + db.update(data) + return redirect(url_for("admin.umbrellas")) |