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) <noreply@anthropic.com>
This commit is contained in:
mwiegand 2026-05-16 11:14:08 +02:00
parent 99e477700a
commit b6305f2aac
No known key found for this signature in database
3 changed files with 8 additions and 12 deletions

View file

@ -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,
}

View file

@ -8,7 +8,7 @@
<p class="last-job">
<a href="/jobs/{{ latest_build.id }}">{{ latest_build_phrase }}</a>
{% if latest_build_is_running %}since{% endif %}
{{ latest_build_when }}
{{ latest_build_at | timeago }}
(<a href="/overlays/{{ overlay.id }}/jobs">show all</a>)
</p>
{% endif %}

View file

@ -26,7 +26,7 @@
<p class="last-job">
<a href="/jobs/{{ latest_job.id }}">{{ latest_job_phrase }}</a>
{% if latest_job_is_running %}since{% endif %}
{{ latest_job_when }}
{{ latest_job_at | timeago }}
(<a href="/servers/{{ server.id }}/jobs">show all</a>)
</p>
{% endif %}