diff options
author | Frederick Yin <fkfd@fkfd.me> | 2022-02-04 20:44:07 +0800 |
---|---|---|
committer | Frederick Yin <fkfd@fkfd.me> | 2022-02-04 20:44:07 +0800 |
commit | 87c661557186a4975fa94977ac1ac1be9bd87d2e (patch) | |
tree | 394f718b68c83a992fffe61b8b29e3497a25e9aa /jimbrella | |
parent | 15dd33f6b1db117716e16f1dfee281efd9b43a2a (diff) |
Supply Jinja with full umbrella data sorted by status
Diffstat (limited to 'jimbrella')
-rw-r--r-- | jimbrella/admin.py | 34 | ||||
-rw-r--r-- | jimbrella/templates/admin/index.html | 19 |
2 files changed, 33 insertions, 20 deletions
diff --git a/jimbrella/admin.py b/jimbrella/admin.py index 9cbf4c8..d5df4d4 100644 --- a/jimbrella/admin.py +++ b/jimbrella/admin.py @@ -30,18 +30,34 @@ def check_privilege(): @bp.route("/") def index(): - umbrellas = db.read() - # count # of umbrellas in each status - status_count = { - status: len([u for u in umbrellas if u["status"] == status]) - for status in ("available", "lent", "overdue") + umbrellas = [dict(umb) for umb in db.read()] + # sort umbrellas by their status + statuses = { + "available": [], + "lent": [], + "overdue": [], } + for umb in umbrellas: + if umb["status"] == "available": + statuses["available"].append(umb) + elif umb["status"] in ("lent", "overdue"): + statuses[umb["status"]].append(umb) + try: + lent_at = isoparse(umb["lent_at"]) + umb["lent_at"] = human_datetime(lent_at) + umb["lent_time_ago"] = ( + human_timedelta(datetime.now(tz=CST) - lent_at) + " ago" + ) + except ValueError: + umb["lent_at"] = "Invalid date" + umb["lent_time_ago"] = "" + return render_template( "admin/index.html", - umbrellas=len(umbrellas), - available=status_count["available"], - lent=status_count["lent"], - overdue=status_count["overdue"], + umbrellas=umbrellas, + available=statuses["available"], + lent=statuses["lent"], + overdue=statuses["overdue"], mobile=user_agent(request.user_agent.string).is_mobile, ) diff --git a/jimbrella/templates/admin/index.html b/jimbrella/templates/admin/index.html index 73ae5f6..50b88ae 100644 --- a/jimbrella/templates/admin/index.html +++ b/jimbrella/templates/admin/index.html @@ -15,22 +15,19 @@ <div class="banner overdue"> <h2 class="banner-heading">Overdue</h2> <span class="proportion"> - <strong class="big">{{ overdue }}</strong> / {{ umbrellas }} + <strong class="big">{{ overdue|length }}</strong> / {{ umbrellas|length }} </span> <div class="table-container"> {% if mobile %} <table class="data"> {% for umb in overdue %} <tr class="{{ umb.status }}"> - <th class="big far" rowspan=4>#{{ umb.serial }}</th> + <th class="big far" rowspan=4>#{{ umb.id }}</th> <td>{{ umb.tenant_name }}</td> </tr> <tr class="{{ umb.status }}"><td>{{ umb.tenant_phone }}</td></tr> - <tr class="{{ umb.status }}"><td>{{ umb.lent_at_str }}</td></tr> - <tr class="{{ umb.status }}"><td> - {{ umb.lent_time_ago_str }} - {% if umb.status in ["lent", "overdue"] %} ago {% endif %} - </td></tr> + <tr class="{{ umb.status }}"><td>{{ umb.lent_at }}</td></tr> + <tr class="{{ umb.status }}"><td>{{ umb.lent_time_ago }}</td></tr> {% endfor %} </table> {% else %} @@ -46,10 +43,10 @@ <tbody> {% for umb in overdue %} <tr> - <td>{{ umb.serial }}</td> + <td>{{ umb.id }}</td> <td>{{ umb.tenant_name }}</td> <td>{{ umb.tenant_phone }}</td> - <td>{{ umb.lent_time_ago_str }} ago</td> + <td>{{ umb.lent_time_ago }}</td> </tr> {% endfor %} </tbody> @@ -64,13 +61,13 @@ <div class="tile lent"> <h2 class="tile-heading">Lent</h2> <span class="proportion"> - <strong class="big">{{ lent }}</strong> / {{ umbrellas }} + <strong class="big">{{ lent|length }}</strong> / {{ umbrellas|length }} </span> </div> <div class="tile available"> <h2 class="tile-heading">Available</h2> <span class="proportion"> - <strong class="big">{{ available }}</strong> / {{ umbrellas }} + <strong class="big">{{ available|length }}</strong> / {{ umbrellas|length }} </span> </div> </div> |