From b6305f2aac47c959b5b6724a50f776a2af3885d5 Mon Sep 17 00:00:00 2001 From: mwiegand Date: Sat, 16 May 2026 11:14:08 +0200 Subject: [PATCH] refactor(page_routes): pass datetime to templates for timeago filter Drop the inline humanize_delta imports and string-precomputation; pass the raw datetime as latest_job_at / latest_build_at and let the template apply the timeago filter. One fewer code path computing relative-time strings. Co-Authored-By: Claude Opus 4.7 (1M context) --- l4d2web/l4d2web/routes/page_routes.py | 16 ++++++---------- .../l4d2web/templates/_overlay_build_status.html | 2 +- l4d2web/l4d2web/templates/_server_actions.html | 2 +- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/l4d2web/l4d2web/routes/page_routes.py b/l4d2web/l4d2web/routes/page_routes.py index 32fa1e2..2b9aad3 100644 --- a/l4d2web/l4d2web/routes/page_routes.py +++ b/l4d2web/l4d2web/routes/page_routes.py @@ -237,8 +237,6 @@ _TERMINAL_JOB_STATES = {"succeeded", "failed", "cancelled"} def _build_server_actions_context(db, server) -> dict: - from l4d2web.services.timeago import humanize_delta - latest_job = db.scalar( select(Job) .where(Job.server_id == server.id) @@ -281,7 +279,7 @@ def _build_server_actions_context(db, server) -> dict: drift = (not has_active_job) and desired_state != actual_state latest_job_phrase: str | None = None - latest_job_when: str | None = None + latest_job_at: datetime | None = None latest_job_is_running = False if latest_job is not None: if latest_job.state in _TERMINAL_JOB_STATES: @@ -291,7 +289,7 @@ def _build_server_actions_context(db, server) -> dict: latest_job_phrase = _OPERATION_GERUND.get(latest_job.operation, latest_job.operation) latest_job_is_running = True ref_time = latest_job.started_at or latest_job.created_at - latest_job_when = humanize_delta(ref_time) + latest_job_at = ref_time return { "display_state": display_state, @@ -300,7 +298,7 @@ def _build_server_actions_context(db, server) -> dict: "drift": drift, "latest_job": latest_job, "latest_job_phrase": latest_job_phrase, - "latest_job_when": latest_job_when, + "latest_job_at": latest_job_at, "latest_job_is_running": latest_job_is_running, } @@ -440,8 +438,6 @@ _BUILD_STATE_LABELS = { def _build_overlay_build_status_context(db, overlay) -> dict: - from l4d2web.services.timeago import humanize_delta - latest_build = db.scalar( select(Job) .where(Job.operation == "build_overlay", Job.overlay_id == overlay.id) @@ -464,7 +460,7 @@ def _build_overlay_build_status_context(db, overlay) -> dict: ) latest_build_phrase: str | None = None - latest_build_when: str | None = None + latest_build_at: datetime | None = None if latest_build is not None: if latest_build.state in _TERMINAL_JOB_STATES: latest_build_phrase = f"{latest_build.operation} {latest_build.state}" @@ -472,13 +468,13 @@ def _build_overlay_build_status_context(db, overlay) -> dict: else: latest_build_phrase = "building" ref_time = latest_build.started_at or latest_build.created_at - latest_build_when = humanize_delta(ref_time) + latest_build_at = ref_time return { "latest_build": latest_build, "latest_build_is_running": is_running, "latest_build_phrase": latest_build_phrase, - "latest_build_when": latest_build_when, + "latest_build_at": latest_build_at, "build_state_label": build_state_label, "build_state_class": build_state_class, } diff --git a/l4d2web/l4d2web/templates/_overlay_build_status.html b/l4d2web/l4d2web/templates/_overlay_build_status.html index db4c320..c44359d 100644 --- a/l4d2web/l4d2web/templates/_overlay_build_status.html +++ b/l4d2web/l4d2web/templates/_overlay_build_status.html @@ -8,7 +8,7 @@

{{ latest_build_phrase }} {% if latest_build_is_running %}since{% endif %} - {{ latest_build_when }} + {{ latest_build_at | timeago }} (show all)

{% endif %} diff --git a/l4d2web/l4d2web/templates/_server_actions.html b/l4d2web/l4d2web/templates/_server_actions.html index 5affb82..e03d256 100644 --- a/l4d2web/l4d2web/templates/_server_actions.html +++ b/l4d2web/l4d2web/templates/_server_actions.html @@ -26,7 +26,7 @@

{{ latest_job_phrase }} {% if latest_job_is_running %}since{% endif %} - {{ latest_job_when }} + {{ latest_job_at | timeago }} (show all)

{% endif %}