feat(ui): rich dashboard cards with countries and recent postcards
This commit is contained in:
@@ -102,17 +102,20 @@ def root(user: User = Depends(get_current_user_web)):
|
||||
@router.get("/dashboard", response_class=HTMLResponse)
|
||||
def dashboard(request: Request, user: User = Depends(get_current_user_web), db: Session = Depends(get_db)):
|
||||
profiles = db.query(Profile).filter(Profile.user_id == user.id).all()
|
||||
# stats per profile
|
||||
stats = {}
|
||||
extras = {}
|
||||
for p in profiles:
|
||||
cards = db.query(Postcard).filter(Postcard.profile_id == p.id).all()
|
||||
cards = db.query(Postcard).filter(Postcard.profile_id == p.id).order_by(Postcard.created_at.desc()).all()
|
||||
stats[p.id] = {
|
||||
"total": len(cards),
|
||||
"sent": sum(1 for c in cards if c.status == "sent"),
|
||||
"delivered": sum(1 for c in cards if c.status == "delivered"),
|
||||
"received": sum(1 for c in cards if c.status == "received"),
|
||||
}
|
||||
return templates.TemplateResponse("dashboard.html", {"request": request, "user": user, "profiles": profiles, "stats": stats})
|
||||
countries = sorted({c.country for c in cards if c.country})
|
||||
recent = cards[:3]
|
||||
extras[p.id] = {"countries": countries, "recent": recent}
|
||||
return templates.TemplateResponse("dashboard.html", {"request": request, "user": user, "profiles": profiles, "stats": stats, "extras": extras})
|
||||
|
||||
|
||||
# ---------- Profiles ----------
|
||||
|
||||
Reference in New Issue
Block a user