From 495ddd3e212eee09195e9cef9f97e0ad9bfec1b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Madis=20M=C3=A4gi?= Date: Tue, 6 Aug 2024 15:43:48 +0300 Subject: [PATCH] Add audit history --- inventory-app/inventory.py | 23 +++++++++++++++++---- inventory-app/templates/inventory_view.html | 22 +++++++++++++++++--- 2 files changed, 38 insertions(+), 7 deletions(-) diff --git a/inventory-app/inventory.py b/inventory-app/inventory.py index 2bd95c9..34b06d2 100644 --- a/inventory-app/inventory.py +++ b/inventory-app/inventory.py @@ -447,14 +447,29 @@ def view_inventory(slug=None): @login_required(groups=["k-space:janitors"]) def view_inventory_audit(item_id): user = read_user() - db.inventory.update_one({ - "_id": ObjectId(item_id), - }, { + item = db.inventory.find_one(filter = { + "_id": ObjectId(item_id) + }, projection = { + "inventory.audit": 1 + }) + + q = { "$set": { "inventory.audit.username": user["username"], "inventory.audit.timestamp": datetime.utcnow(), }, - }) + } + if item["inventory"].get("audit"): + q["$push"] = { + "inventory.audit.log": { + "username": item["inventory"]["audit"]["username"], + "timestamp": item["inventory"]["audit"]["timestamp"], + } + } + db.inventory.update_one({ + "_id": ObjectId(item_id) + }, q) + if request.form and request.form.get("noRedirect", False): return {} else: diff --git a/inventory-app/templates/inventory_view.html b/inventory-app/templates/inventory_view.html index 6f36a39..b3b2e5f 100644 --- a/inventory-app/templates/inventory_view.html +++ b/inventory-app/templates/inventory_view.html @@ -65,13 +65,29 @@ {{ item.inventory.get("user").username | display_name }} + {% macro auditLine(timestamp, user) -%} + {{ timestamp | timeago }} + by + {{ user | display_name }} + {%- endmacro %} Last audited {% if item.inventory.get("audit") %} - {{ item.inventory.audit.timestamp | timeago }} - by - {{ item.inventory.audit.username | display_name }} + {% if item.inventory.get("audit", {}).get("log") %} +
+ + {{ auditLine(item.inventory.audit.timestamp, item.inventory.audit.username) }} + + +
+ {% else %} + {{ auditLine(item.inventory.audit.timestamp, item.inventory.audit.username) }} + {% endif %} {% else %} Never {% endif %}