release 1.13.3: sticky generated time in Europe/Zurich (CEST)

Display wall-clock like local `date` (CEST/CET), not UTC …Z. ISO datetime
keeps +02:00 offset so the live age counter stays correct.
This commit is contained in:
Hernâni Marques 2026-07-19 02:43:17 +02:00
parent aa854b034a
commit d5213adb7a
No known key found for this signature in database
GPG key ID: CB5738652768F7E9
4 changed files with 31 additions and 9 deletions

View file

@ -8,6 +8,25 @@ import re
from datetime import datetime, timezone
from pathlib import Path
# Display timestamps in Central European time (CEST/CET · MESZ/MEZ), same as `date` on CH/DE hosts.
try:
from zoneinfo import ZoneInfo
MON_TZ = ZoneInfo("Europe/Zurich")
except Exception: # pragma: no cover
MON_TZ = timezone.utc
def format_generated_now() -> tuple[str, str]:
"""Return (display_local, iso_with_offset) for sticky bar + <time datetime>."""
now = datetime.now(MON_TZ)
# ISO with offset so JS Date.parse / age stays correct
generated_iso = now.isoformat(timespec="seconds")
# Human: 2026-07-19 02:41:34 CEST (MESZ in German speech = CEST)
tz_name = now.tzname() or "CEST"
generated_at = now.strftime("%Y-%m-%d %H:%M:%S") + f" {tz_name}"
return generated_at, generated_iso
def ui_lang(explicit: str = "") -> str:
"""en (default) or fr. Env: TALER_MON_LANG; auto fr for lefrancpaysan hosts."""
import os
@ -1734,9 +1753,7 @@ def build_redirect_html(
else html.escape(commit_short)
)
if not generated_at:
now = datetime.now(timezone.utc)
generated_iso = now.strftime("%Y-%m-%dT%H:%M:%SZ")
generated_at = now.strftime("%Y-%m-%d %H:%M:%SZ")
generated_at, generated_iso = format_generated_now()
# Redirect pages exist only when the run failed → treat as red if n_err unknown
if n_err <= 0:
n_err = max(n_err, 1)
@ -1842,9 +1859,7 @@ def main() -> None:
import os
os.environ["TALER_MON_LANG"] = args.lang
log_text = args.log.read_text(errors="replace") if args.log.is_file() else ""
now = datetime.now(timezone.utc)
generated_iso = now.strftime("%Y-%m-%dT%H:%M:%SZ")
generated_at = now.strftime("%Y-%m-%d %H:%M:%SZ")
generated_at, generated_iso = format_generated_now()
title = args.title or f"{args.page_label} {args.mode} · {args.hostname}"
raw_for_counts = [