You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tooling.apache.org by sb...@apache.org on 2025/04/23 13:51:27 UTC

(tooling-trusted-release) branch main updated: Add a placeholder page for refining a release preview

This is an automated email from the ASF dual-hosted git repository.

sbp pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tooling-trusted-release.git


The following commit(s) were added to refs/heads/main by this push:
     new 8f6fef7  Add a placeholder page for refining a release preview
8f6fef7 is described below

commit 8f6fef70719e208bfde376d266b1a29a6d01d89c
Author: Sean B. Palmer <se...@miscoranda.com>
AuthorDate: Wed Apr 23 14:51:03 2025 +0100

    Add a placeholder page for refining a release preview
---
 atr/routes/mapping.py                       |  4 +-
 atr/routes/preview.py                       | 17 +++++++-
 atr/templates/preview-announce-release.html |  3 +-
 atr/templates/preview-refine-release.html   | 60 +++++++++++++++++++++++++++++
 playwright/test.py                          |  6 +--
 5 files changed, 82 insertions(+), 8 deletions(-)

diff --git a/atr/routes/mapping.py b/atr/routes/mapping.py
index 878bbc7..8bf94b8 100644
--- a/atr/routes/mapping.py
+++ b/atr/routes/mapping.py
@@ -29,7 +29,7 @@ def release_as_url(release: models.Release) -> str:
         resolve_release = candidate.resolve_release  # type: ignore[has-type]
         return util.as_url(resolve_release, project_name=release.project.name, version_name=release.version)
     elif release.phase.value == "release_preview":
-        announce_release = preview.announce_release  # type: ignore[has-type]
-        return util.as_url(announce_release, project_name=release.project.name, version_name=release.version)
+        refine_release = preview.refine_release  # type: ignore[has-type]
+        return util.as_url(refine_release, project_name=release.project.name, version_name=release.version)
     else:
         raise ValueError(f"Unknown release phase: {release.phase}")
diff --git a/atr/routes/preview.py b/atr/routes/preview.py
index 65924d6..dac409d 100644
--- a/atr/routes/preview.py
+++ b/atr/routes/preview.py
@@ -148,7 +148,7 @@ async def announce(session: routes.CommitterSession) -> str | response.Response:
     )
 
 
-@routes.committer("/preview/announce/<project_name>/<version_name>")
+@routes.committer("/announce/<project_name>/<version_name>")
 async def announce_release(
     session: routes.CommitterSession, project_name: str, version_name: str
 ) -> str | response.Response:
@@ -226,6 +226,21 @@ async def previews(session: routes.CommitterSession) -> str:
     )
 
 
+@routes.committer("/refine/<project_name>/<version_name>")
+async def refine_release(
+    session: routes.CommitterSession, project_name: str, version_name: str
+) -> response.Response | str:
+    """Refine a release preview."""
+    async with db.session() as data:
+        release = await data.release(name=models.release_name(project_name, version_name), _project=True).demand(
+            base.ASFQuartException("Release does not exist", errorcode=404)
+        )
+        if release.phase != models.ReleasePhase.RELEASE_PREVIEW:
+            return await session.redirect(previews, error="Release is not in the preview phase")
+
+    return await quart.render_template("preview-refine-release.html", release=release)
+
+
 @routes.committer("/preview/view/<project_name>/<version_name>")
 async def view(session: routes.CommitterSession, project_name: str, version_name: str) -> response.Response | str:
     """View all the files in the rsync upload directory for a release."""
diff --git a/atr/templates/preview-announce-release.html b/atr/templates/preview-announce-release.html
index ff8c287..c38628d 100644
--- a/atr/templates/preview-announce-release.html
+++ b/atr/templates/preview-announce-release.html
@@ -25,7 +25,8 @@
 
 {% block content %}
   <p>
-    <a href="{{ as_url(routes.root.index) }}" class="atr-back-link">← Back to Select a release</a>
+    <a href="{{ as_url(routes.preview.refine_release, project_name=release.project.name, version_name=release.version) }}"
+       class="atr-back-link">← Back to Refine {{ release.short_display_name }}</a>
   </p>
 
   <h1>
diff --git a/atr/templates/preview-refine-release.html b/atr/templates/preview-refine-release.html
new file mode 100644
index 0000000..e5166f5
--- /dev/null
+++ b/atr/templates/preview-refine-release.html
@@ -0,0 +1,60 @@
+{% extends "layouts/base.html" %}
+
+{% block title %}
+  Refine {{ release.project.display_name }} {{ release.version }} ~ ATR
+{% endblock title %}
+
+{% block description %}
+  Refine {{ release.project.display_name }} {{ release.version }} as a release preview.
+{% endblock description %}
+
+{% block content %}
+  <p>
+    <a href="{{ as_url(routes.root.index) }}" class="atr-back-link">← Back to Select a release</a>
+  </p>
+
+  <h1>
+    Refine <strong>{{ release.project.short_display_name }}</strong> <em>{{ release.version }}</em>
+  </h1>
+
+  <div id="{{ release.name }}" class="card mb-4 shadow-sm">
+    <div class="card-header bg-light">
+      <h3 class="card-title mb-0">About this release preview</h3>
+    </div>
+    <div class="card-body">
+      <div class="d-flex flex-wrap gap-3 pb-3 mb-3 border-bottom text-secondary fs-6">
+        <span class="page-preview-meta-item">Phase: <strong class="atr-phase-three">③ REFINE</strong></span>
+        <span class="page-preview-meta-item">Revision: {{ release.revision }}</span>
+        <span class="page-preview-meta-item">Created: {{ release.created.strftime("%Y-%m-%d %H:%M:%S UTC") }}</span>
+      </div>
+      <div>
+        <a title="Announce and distribute {{ release.name }}"
+           href="{{ as_url(routes.preview.announce_release, project_name=release.project.name, version_name=release.version) }}"
+           class="btn btn-sm btn-primary me-2">
+          <i class="fas fa-check-circle"></i>
+          Announce and distribute
+        </a>
+        <a title="Show files for {{ release.name }}"
+           href="{{ as_url(routes.preview.view, project_name=release.project.name, version_name=release.version) }}"
+           class="btn btn-sm btn-secondary">
+          <i class="fas fa-file-archive"></i>
+          Show files
+        </a>
+      </div>
+    </div>
+  </div>
+
+  <div class="card mb-4 shadow-sm">
+    <div class="card-header bg-light">
+      <h3 class="card-title mb-0">TODO</h3>
+    </div>
+    <div class="card-body">
+      <p>We plan to allow moving files and removing "RC" tags from files on this page.</p>
+      <p>For now, you can only move straight to the announce page.</p>
+    </div>
+  </div>
+{% endblock content %}
+
+{% block javascripts %}
+  {{ super() }}
+{% endblock javascripts %}
diff --git a/playwright/test.py b/playwright/test.py
index 658efd2..b1ffafc 100644
--- a/playwright/test.py
+++ b/playwright/test.py
@@ -206,10 +206,8 @@ def lifecycle_05_resolve_vote(page: sync_api.Page, credentials: Credentials, ver
     sync_api.expect(submit_button_locator).to_be_enabled()
     submit_button_locator.click()
 
-    logging.info(
-        f"Waiting for navigation to /preview/announce/tooling-test-example/{version_name} after resolving the vote"
-    )
-    wait_for_path(page, f"/preview/announce/tooling-test-example/{version_name}")
+    logging.info(f"Waiting for navigation to /announce/tooling-test-example/{version_name} after resolving the vote")
+    wait_for_path(page, f"/announce/tooling-test-example/{version_name}")
     logging.info("Vote resolution actions completed successfully")
 
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@tooling.apache.org
For additional commands, e-mail: commits-help@tooling.apache.org