This is an automated email from the ASF dual-hosted git repository.
arm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tooling-trusted-releases.git
The following commit(s) were added to refs/heads/main by this push:
new 72c31ca Split failed and in-progress task results, format error
message better
72c31ca is described below
commit 72c31ca67df45be5728711dc4b095353c5686ea3
Author: Alastair McFarlane <[email protected]>
AuthorDate: Tue Jan 20 11:12:45 2026 +0000
Split failed and in-progress task results, format error message better
---
atr/get/distribution.py | 54 +++++++++++++++++++++++++++++++++++++++++--------
atr/get/finish.py | 16 ++++++++-------
2 files changed, 55 insertions(+), 15 deletions(-)
diff --git a/atr/get/distribution.py b/atr/get/distribution.py
index 00613a7..ab089a2 100644
--- a/atr/get/distribution.py
+++ b/atr/get/distribution.py
@@ -58,11 +58,9 @@ async def list_get(session: web.Committer, project_name:
str, version_name: str)
# Distribution list for project-version
block.h1["Distribution list for ",
htm.em[f"{project_name}-{version_name}"]]
+
if len(tasks) > 0:
- block.div(".alert.alert-info.mb-3")[
- htm.p["The following distribution workflow tasks are currently
running or have failed:"],
- htm.div[*[_render_task(t) for t in tasks]],
- ]
+ _render_distribution_tasks(tasks, block, project_name, version_name)
if not distributions:
block.p["No distributions found."]
@@ -248,6 +246,45 @@ async def _record_form_page(project: str, version: str,
staging: bool) -> str:
return await template.blank(title, content=block.collect())
+def _render_distribution_tasks(tasks: Sequence[sql.Task], block: htm.Block,
project_name: str, version_name: str):
+ failed_tasks = [
+ t for t in tasks if t.status == sql.TaskStatus.FAILED or (t.workflow
and t.workflow.status == "failed")
+ ]
+ in_progress_tasks = [
+ t
+ for t in tasks
+ if t.status in [sql.TaskStatus.QUEUED, sql.TaskStatus.ACTIVE]
+ or (t.workflow and t.workflow.status not in ["completed", "success",
"failed"])
+ ]
+ if len(failed_tasks) > 0:
+ summary = f"{len(failed_tasks)} distribution{'s' if (len(failed_tasks)
!= 1) else ''} failed for this version"
+ block.append(
+ htm.div(".alert.alert-danger.mb-3")[
+ htm.h3["Failed distributions"],
+ htm.details[
+ htm.summary[summary],
+ htm.div[*[_render_task(f) for f in failed_tasks]],
+ ],
+ ]
+ )
+ if len(in_progress_tasks) > 0:
+ block.append(
+ htm.div(".alert.alert-info.mb-3")[
+ htm.h3["In-progress distributions"],
+ htm.p["One or more automatic distributions are still
in-progress:"],
+ *[_render_task(f) for f in in_progress_tasks],
+ htm.a(
+ ".btn.btn-success.mt-2",
+ href=util.as_url(
+ list_get,
+ project_name=project_name,
+ version_name=version_name,
+ ),
+ )["Refresh"],
+ ]
+ )
+
+
def _render_task(task: sql.Task) -> htm.Element:
"""Render a distribution task's details."""
args: gha.DistributionWorkflow =
gha.DistributionWorkflow.model_validate(task.task_args)
@@ -258,11 +295,12 @@ def _render_task(task: sql.Task) -> htm.Element:
task.workflow.message if task.workflow and task.workflow.message else
workflow_status.capitalize()
)
if task_status != sql.TaskStatus.COMPLETED:
- return htm.details[
+ return htm.details(".ms-4")[
htm.summary[f"{task_date} {args.platform} ({args.package}
{args.version})"],
- htm.p[task.error if task.error else task_status.capitalize()],
+ htm.p(".ms-4")[task.error if task.error else
task_status.capitalize()],
]
else:
- return htm.details[
- htm.summary[f"{task_date} {args.platform} ({args.package}
{args.version})"], htm.p[workflow_message]
+ return htm.details(".ms-4")[
+ htm.summary[f"{task_date} {args.platform} ({args.package}
{args.version})"],
+ *[htm.p(".ms-4")[w] for w in workflow_message.split("\n")],
]
diff --git a/atr/get/finish.py b/atr/get/finish.py
index f31a6d3..a715d32 100644
--- a/atr/get/finish.py
+++ b/atr/get/finish.py
@@ -232,7 +232,7 @@ def _render_distribution_tasks(release: sql.Release, tasks:
Sequence[sql.Task])
t
for t in tasks
if t.status in [sql.TaskStatus.QUEUED, sql.TaskStatus.ACTIVE]
- or (t.workflow and t.workflow.status not in ["success", "failed"])
+ or (t.workflow and t.workflow.status not in ["completed", "success",
"failed"])
]
block = htm.Block()
@@ -255,7 +255,7 @@ def _render_distribution_tasks(release: sql.Release, tasks:
Sequence[sql.Task])
htm.p["One or more automatic distributions are still
in-progress:"],
*[_render_task(f) for f in in_progress_tasks],
htm.a(
- ".btn.btn-success.me-2",
+ ".btn.btn-success.mt-2",
href=util.as_url(
selected,
project_name=release.project.name,
@@ -555,13 +555,15 @@ def _render_task(task: sql.Task) -> htm.Element:
task.workflow.message if task.workflow and task.workflow.message else
workflow_status.capitalize()
)
if task_status != sql.TaskStatus.COMPLETED:
- return htm.p[
- f"{task_date} {args.platform} ({args.package} {args.version}): {
- task.error if task.error else task_status.capitalize()
- }"
+ return htm.details(".ms-4")[
+ htm.summary[f"{task_date} {args.platform} ({args.package}
{args.version})"],
+ htm.p(".ms-4")[task.error if task.error else
task_status.capitalize()],
]
else:
- return htm.p[f"{task_date} {args.platform} ({args.package}
{args.version}): {workflow_message}"]
+ return htm.details(".ms-4")[
+ htm.summary[f"{task_date} {args.platform} ({args.package}
{args.version})"],
+ *[htm.p(".ms-4")[w] for w in workflow_message.split("\n")],
+ ]
async def _sources_and_targets(latest_revision_dir: pathlib.Path) ->
tuple[list[pathlib.Path], set[pathlib.Path]]:
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]