diff --git a/inventory-app/inventory.py b/inventory-app/inventory.py index beb6627..17d9864 100644 --- a/inventory-app/inventory.py +++ b/inventory-app/inventory.py @@ -1,6 +1,6 @@ import boto3 import pymongo -from datetime import datetime +from datetime import datetime, date, timedelta from botocore.exceptions import ClientError from bson.objectid import ObjectId from flask import Blueprint, abort, g, make_response, redirect, render_template, request @@ -393,13 +393,15 @@ def view_inventory(slug=None): q = {"type": {"$ne": "token"}} template = "inventory.html" public_view = False - if not read_user(): + login_user = read_user() + if not login_user: q.update({"inventory.public": True}) template = "inventory_public.html" public_view = True else: fields.append(("inventory.owner.username", "Owner", str)) fields.append(("inventory.user.username", "User", str)) + can_audit = "k-space:janitors" in login_user["groups"] if slug and not public_view: template = "inventory_pick.html" if request.path.startswith("/m/inventory/clone-with-slug"): @@ -446,7 +448,29 @@ def view_inventory_audit(item_id): "inventory.audit.timestamp": datetime.utcnow(), }, }) - return redirect("/m/inventory/%s/view" % item_id) + if request.form and request.form.get("noRedirect", False): + return {} + else: + return redirect("/m/inventory/%s/view" % item_id) + +@page_inventory.app_template_filter('audit_text') +def render_audit_text(item): + timestamp = item.get('audit', {}).get('timestamp', False) + if timestamp: + return timestamp.date() + else: + return 'Never' + +@page_inventory.app_template_filter('audit_color') +def render_audit_color(item): + timestamp = item.get('audit', {}).get('timestamp', False) + today = date.today() + if not timestamp or timestamp.date() < today - timedelta(days=365): + return "red" + elif timestamp.date() < today - timedelta(days=7): + return "orange" + else: + return "green unclickable" @page_inventory.route("/m/inventory//claim", methods=["POST"]) @login_required diff --git a/inventory-app/templates/base.html b/inventory-app/templates/base.html index dbfc5a2..be27fa9 100644 --- a/inventory-app/templates/base.html +++ b/inventory-app/templates/base.html @@ -60,6 +60,9 @@ body { -webkit-box-orient: vertical; overflow: hidden; } +.unclickable { + pointer-events: none; +} diff --git a/inventory-app/templates/inventory.html b/inventory-app/templates/inventory.html index 1df44ad..e581e51 100644 --- a/inventory-app/templates/inventory.html +++ b/inventory-app/templates/inventory.html @@ -12,6 +12,9 @@ Type Owner User + {% if can_audit %} + Audit + {% endif %} @@ -30,6 +33,17 @@ {{ item.type }} {{ item | owner_link}} {{ item | user_link}} + {% if can_audit %} + + + + {% endif %} + {% endfor %} @@ -38,4 +52,20 @@ Add item

+ {% endblock %}