Add HTML5 setup SSE updates
CI / python (push) Has been cancelled
CI / rust (push) Has been cancelled

This commit is contained in:
2026-05-17 02:51:17 +03:00
parent 8a1c0da0ea
commit 65c82c4fed
3 changed files with 61 additions and 5 deletions
+11 -5
View File
@@ -1038,7 +1038,13 @@ def render_html5_project_setup(*, project_id: str, projects: Iterable[object], s
sources = getattr(setup, "import_sources", []) or []
source_cards = "".join(_import_source_card(source) for source in sources)
content = f"""
<main class="workspace setup-workspace" data-html5-page="setup" data-project-id="{escape(project_id)}">
<main
class="workspace setup-workspace"
data-html5-page="setup"
data-project-id="{escape(project_id)}"
hx-ext="sse"
sse-connect="/html5/projects/{quote(project_id)}/setup/events"
>
{_topbar(project_id, project_nav)}
<section class="setup-layout">
<aside class="panel">
@@ -1187,7 +1193,7 @@ def render_html5_import_check(project_id: str, check: object | None = None) -> s
def render_html5_import_job(project_id: str, job: object | None = None) -> str:
if job is None:
return f"""
<div class="import-job" data-html5-import-job>
<div class="import-job" data-html5-import-job sse-swap="setup-import-job" hx-swap="outerHTML">
<div class="panel-title flush">Фоновый импорт</div>
<p class="muted padded">Фоновая задача импорта для проекта {escape(project_id)} еще не запускалась.</p>
</div>
@@ -1199,14 +1205,14 @@ def render_html5_import_job(project_id: str, job: object | None = None) -> str:
source = str(payload.get("source") or "")
stage = str(payload.get("stage") or "")
logs = payload.get("logs") if isinstance(payload.get("logs"), list) else []
poll = ' hx-trigger="every 2s" hx-swap="outerHTML"' if status in {"QUEUED", "RUNNING"} else ""
logs_html = "".join(f"<li>{escape(str(item))}</li>" for item in logs[-6:])
return f"""
<div
class="import-job"
data-html5-import-job
hx-get="/html5/projects/{quote(project_id)}/setup/jobs/{quote(job_id)}"
{poll}
sse-swap="setup-import-job"
hx-swap="outerHTML"
>
<div class="panel-title flush">Фоновый импорт</div>
<div class="check-head">
@@ -1231,7 +1237,7 @@ def render_html5_setup_summary(project_id: str, setup: object) -> str:
class="setup-summary"
data-html5-setup-summary
hx-get="/html5/projects/{quote(project_id)}/setup/summary"
hx-trigger="every 5s"
sse-swap="setup-summary"
hx-swap="outerHTML"
>
<div class="section-title">