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:
parent
99e477700a
commit
b6305f2aac
3 changed files with 8 additions and 12 deletions
|
|
@ -237,8 +237,6 @@ _TERMINAL_JOB_STATES = {"succeeded", "failed", "cancelled"}
|
||||||
|
|
||||||
|
|
||||||
def _build_server_actions_context(db, server) -> dict:
|
def _build_server_actions_context(db, server) -> dict:
|
||||||
from l4d2web.services.timeago import humanize_delta
|
|
||||||
|
|
||||||
latest_job = db.scalar(
|
latest_job = db.scalar(
|
||||||
select(Job)
|
select(Job)
|
||||||
.where(Job.server_id == server.id)
|
.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
|
drift = (not has_active_job) and desired_state != actual_state
|
||||||
|
|
||||||
latest_job_phrase: str | None = None
|
latest_job_phrase: str | None = None
|
||||||
latest_job_when: str | None = None
|
latest_job_at: datetime | None = None
|
||||||
latest_job_is_running = False
|
latest_job_is_running = False
|
||||||
if latest_job is not None:
|
if latest_job is not None:
|
||||||
if latest_job.state in _TERMINAL_JOB_STATES:
|
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_phrase = _OPERATION_GERUND.get(latest_job.operation, latest_job.operation)
|
||||||
latest_job_is_running = True
|
latest_job_is_running = True
|
||||||
ref_time = latest_job.started_at or latest_job.created_at
|
ref_time = latest_job.started_at or latest_job.created_at
|
||||||
latest_job_when = humanize_delta(ref_time)
|
latest_job_at = ref_time
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"display_state": display_state,
|
"display_state": display_state,
|
||||||
|
|
@ -300,7 +298,7 @@ def _build_server_actions_context(db, server) -> dict:
|
||||||
"drift": drift,
|
"drift": drift,
|
||||||
"latest_job": latest_job,
|
"latest_job": latest_job,
|
||||||
"latest_job_phrase": latest_job_phrase,
|
"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,
|
"latest_job_is_running": latest_job_is_running,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -440,8 +438,6 @@ _BUILD_STATE_LABELS = {
|
||||||
|
|
||||||
|
|
||||||
def _build_overlay_build_status_context(db, overlay) -> dict:
|
def _build_overlay_build_status_context(db, overlay) -> dict:
|
||||||
from l4d2web.services.timeago import humanize_delta
|
|
||||||
|
|
||||||
latest_build = db.scalar(
|
latest_build = db.scalar(
|
||||||
select(Job)
|
select(Job)
|
||||||
.where(Job.operation == "build_overlay", Job.overlay_id == overlay.id)
|
.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_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 is not None:
|
||||||
if latest_build.state in _TERMINAL_JOB_STATES:
|
if latest_build.state in _TERMINAL_JOB_STATES:
|
||||||
latest_build_phrase = f"{latest_build.operation} {latest_build.state}"
|
latest_build_phrase = f"{latest_build.operation} {latest_build.state}"
|
||||||
|
|
@ -472,13 +468,13 @@ def _build_overlay_build_status_context(db, overlay) -> dict:
|
||||||
else:
|
else:
|
||||||
latest_build_phrase = "building"
|
latest_build_phrase = "building"
|
||||||
ref_time = latest_build.started_at or latest_build.created_at
|
ref_time = latest_build.started_at or latest_build.created_at
|
||||||
latest_build_when = humanize_delta(ref_time)
|
latest_build_at = ref_time
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"latest_build": latest_build,
|
"latest_build": latest_build,
|
||||||
"latest_build_is_running": is_running,
|
"latest_build_is_running": is_running,
|
||||||
"latest_build_phrase": latest_build_phrase,
|
"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_label": build_state_label,
|
||||||
"build_state_class": build_state_class,
|
"build_state_class": build_state_class,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
<p class="last-job">
|
<p class="last-job">
|
||||||
<a href="/jobs/{{ latest_build.id }}">{{ latest_build_phrase }}</a>
|
<a href="/jobs/{{ latest_build.id }}">{{ latest_build_phrase }}</a>
|
||||||
{% if latest_build_is_running %}since{% endif %}
|
{% if latest_build_is_running %}since{% endif %}
|
||||||
{{ latest_build_when }}
|
{{ latest_build_at | timeago }}
|
||||||
(<a href="/overlays/{{ overlay.id }}/jobs">show all</a>)
|
(<a href="/overlays/{{ overlay.id }}/jobs">show all</a>)
|
||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
<p class="last-job">
|
<p class="last-job">
|
||||||
<a href="/jobs/{{ latest_job.id }}">{{ latest_job_phrase }}</a>
|
<a href="/jobs/{{ latest_job.id }}">{{ latest_job_phrase }}</a>
|
||||||
{% if latest_job_is_running %}since{% endif %}
|
{% if latest_job_is_running %}since{% endif %}
|
||||||
{{ latest_job_when }}
|
{{ latest_job_at | timeago }}
|
||||||
(<a href="/servers/{{ server.id }}/jobs">show all</a>)
|
(<a href="/servers/{{ server.id }}/jobs">show all</a>)
|
||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue