diff --git a/app.py b/app.py index 622adfd..20c6bb2 100644 --- a/app.py +++ b/app.py @@ -728,12 +728,26 @@ def prompt_delete(prompt_id: int): return HTMLResponse("") +def _parse_utcish(ts: Optional[str]) -> Optional[datetime]: + if not ts: + return None + try: + return datetime.fromisoformat(str(ts).replace("Z", "+00:00")).replace(tzinfo=None) + except Exception: + try: + return datetime.fromisoformat(str(ts)) + except Exception: + return None + + def _fmt_elapsed(start_iso: Optional[str], end_iso: Optional[str] = None) -> str: - if not start_iso: + s = _parse_utcish(start_iso) + if not s: return "-" try: - s = datetime.fromisoformat(start_iso) - e = datetime.fromisoformat(end_iso) if end_iso else datetime.now() + e = _parse_utcish(end_iso) if end_iso else datetime.utcnow() + if not e: + e = datetime.utcnow() sec = max(0, int((e - s).total_seconds())) if sec < 60: return f"{sec}s" @@ -834,10 +848,16 @@ def jobs_page(queued: Optional[int] = None):