From ad85b85e1ebd0cc2cc40ec7bbabcf887a393fa4c Mon Sep 17 00:00:00 2001 From: Zichao Lin Date: Wed, 15 Jul 2026 19:36:31 +0800 Subject: [PATCH] fix(dashboard+list): pending status sort first, stats count, badge/recipient/time display --- app/routers/web.py | 8 ++++---- app/templates/dashboard.html | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/routers/web.py b/app/routers/web.py index 5c9a62d..4321eb3 100644 --- a/app/routers/web.py +++ b/app/routers/web.py @@ -590,7 +590,7 @@ def dashboard(request: Request, user: User = Depends(get_current_user_web), db: all_cards.extend(cards) total = len(all_cards) - sent = sum(1 for c in all_cards if c.status == "sent") + sent = sum(1 for c in all_cards if c.status in ("pending", "sent")) delivered = sum(1 for c in all_cards if c.status == "delivered") received = sum(1 for c in all_cards if c.status == "received") countries = len({c.country_to for c in all_cards if c.country_to}) @@ -642,7 +642,7 @@ def profile_list(request: Request, user: User = Depends(get_current_user_web), d cards = db.query(Postcard).filter(Postcard.profile_id == p.id).all() extras[p.id] = { "total": len(cards), - "sent": sum(1 for c in cards if c.status == "sent"), + "sent": sum(1 for c in cards if c.status in ("pending", "sent")), "delivered": sum(1 for c in cards if c.status == "delivered"), "received": sum(1 for c in cards if c.status == "received"), "countries": len({c.country_to for c in cards if c.country_to}), @@ -707,8 +707,8 @@ def postcard_list( # collect existing countries for dropdown all_countries = sorted({pc.country_to for pc in db.query(Postcard.country_to).filter(Postcard.profile_id == profile_id, Postcard.country_to.isnot(None)).all()}) - # status sort order: sent=0, delivered=1, received=2 - _status_order = {"sent": 0, "delivered": 1, "received": 2} + # status sort order: pending=0, sent=1, delivered=2, received=3 + _status_order = {"pending": 0, "sent": 1, "delivered": 2, "received": 3} postcards.sort(key=lambda pc: (_status_order.get(pc.status, 9), -(pc.send_time or pc.arrival_time or pc.receive_time or pc.created_at).timestamp())) # split into sent and received diff --git a/app/templates/dashboard.html b/app/templates/dashboard.html index df25e84..c6ad0a8 100644 --- a/app/templates/dashboard.html +++ b/app/templates/dashboard.html @@ -115,7 +115,7 @@ new Chart(document.getElementById('chart-received'), {
{{ pc.card_number }} - {{ {'sent':'已寄出','delivered':'已送达','received':'已收到'}.get(pc.status) if user.language=='zh' else {'sent':'Sent','delivered':'Delivered','received':'Received'}.get(pc.status) }} + {{ {'pending':'待寄出','sent':'已寄出','delivered':'已送达','received':'已收到'}.get(pc.status) if user.language=='zh' else {'pending':'Pending','sent':'Sent','delivered':'Delivered','received':'Received'}.get(pc.status) }}
@@ -125,7 +125,7 @@ new Chart(document.getElementById('chart-received'), { {% endif %}
- {% if pc.status in ('sent','delivered') %} + {% if pc.status in ('pending','sent','delivered') %} → {{ pc.recipient_name or '-' }} {% else %} ← {{ pc.sender_name or '-' }} @@ -134,7 +134,7 @@ new Chart(document.getElementById('chart-received'), {
- {% if pc.status == 'sent' and pc.send_time %} + {% if pc.status in ('pending','sent') and pc.send_time %} {% set delta = (now.date() - pc.send_time.date()).days %} {% if delta == 0 %}{{ 'dash.today'|t(user.language) }}{% elif delta == 1 %}{{ 'dash.yesterday'|t(user.language) }}{% else %}{{ delta }}{{ 'dash.days_ago'|t(user.language) }}{% endif %} {% elif pc.status == 'delivered' and pc.arrival_time %}