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 298c328  Rename the overview page to content
298c328 is described below

commit 298c328477c5a0daf3c12dbb8b4247762d2bdc19
Author: Sean B. Palmer <[email protected]>
AuthorDate: Mon Apr 21 19:28:42 2025 +0100

    Rename the overview page to content
---
 atr/routes/draft.py                                | 188 ++++++++++-----------
 atr/routes/release.py                              |   2 +-
 atr/templates/draft-add-files.html                 |   2 +-
 .../{draft-overview.html => draft-content.html}    |   0
 atr/templates/draft-vote-start.html                |   2 +-
 atr/templates/index-committer.html                 |   2 +-
 playwright/test.py                                 |   4 +-
 7 files changed, 100 insertions(+), 100 deletions(-)

diff --git a/atr/routes/draft.py b/atr/routes/draft.py
index 7475fb5..8f6c983 100644
--- a/atr/routes/draft.py
+++ b/atr/routes/draft.py
@@ -156,7 +156,7 @@ async def add(session: routes.CommitterSession) -> 
response.Response | str:
                 project_name=str(form.project_name.data), 
version=str(form.version_name.data), asf_uid=session.uid
             )
             return await session.redirect(
-                overview,
+                content,
                 project_name=project.name,
                 version_name=new_release.version,
                 success="Release candidate draft created successfully",
@@ -236,6 +236,98 @@ async def add_files(session: routes.CommitterSession, 
project_name: str, version
     )
 
 
[email protected]("/draft/content/<project_name>/<version_name>")
+async def content(session: routes.CommitterSession, project_name: str, 
version_name: str) -> response.Response | str:
+    """Show the contents of the release candidate draft."""
+    if not any((p.name == project_name) for p in (await 
session.user_projects)):
+        return await session.redirect(add, error="You do not have access to 
this project")
+
+    async with db.session() as data:
+        release_name = models.release_name(project_name, version_name)
+        release = await data.release(
+            name=release_name, 
phase=models.ReleasePhase.RELEASE_CANDIDATE_DRAFT, _project=True
+        ).demand(base.ASFQuartException("Release does not exist", 
errorcode=404))
+        if release.revision is None:
+            raise base.ASFQuartException("This release does not have a 
revision.", errorcode=400)
+
+        base_path = util.get_release_candidate_draft_dir() / project_name / 
version_name / release.revision
+        paths = await util.paths_recursive(base_path)
+        path_templates = {}
+        path_substitutions = {}
+        path_artifacts = set()
+        path_metadata = set()
+        path_successes = {}
+        path_warnings = {}
+        path_errors = {}
+
+        for path in paths:
+            # Get template and substitutions
+            elements = {
+                "core": project_name,
+                "version": version_name,
+                "sub": None,
+                "template": None,
+                "substitutions": None,
+            }
+            template, substitutions = analysis.filename_parse(str(path), 
elements)
+            path_templates[path] = template
+            path_substitutions[path] = 
analysis.substitutions_format(substitutions) or "none"
+
+            # Get artifacts and metadata
+            search = re.search(analysis.extension_pattern(), str(path))
+            if search:
+                if search.group("artifact"):
+                    path_artifacts.add(path)
+                elif search.group("metadata"):
+                    path_metadata.add(path)
+
+            # Get successes, warnings, and errors
+            path_successes[path] = await data.check_result(
+                release_name=release.name, primary_rel_path=str(path), 
status=models.CheckResultStatus.SUCCESS
+            ).all()
+            path_warnings[path] = await data.check_result(
+                release_name=release.name, primary_rel_path=str(path), 
status=models.CheckResultStatus.WARNING
+            ).all()
+            path_errors[path] = await data.check_result(
+                release_name=release.name, primary_rel_path=str(path), 
status=models.CheckResultStatus.FAILURE
+            ).all()
+
+        revision_name_from_link, revision_editor, revision_time = await 
revision.latest_info(project_name, version_name)
+
+        # Get the number of ongoing tasks for the current revision
+        ongoing_tasks_count = 0
+        if revision_name_from_link:
+            ongoing_tasks_count = await db.tasks_ongoing(project_name, 
version_name, revision_name_from_link)
+
+    delete_draft_form = await DeleteForm.create_form()
+    delete_file_form = await DeleteFileForm.create_form()
+
+    return await quart.render_template(
+        "draft-content.html",
+        project_name=project_name,
+        version_name=version_name,
+        release=release,
+        paths=paths,
+        artifacts=path_artifacts,
+        metadata=path_metadata,
+        successes=path_successes,
+        warnings=path_warnings,
+        errors=path_errors,
+        templates=path_templates,
+        substitutions=path_substitutions,
+        revision_editor=revision_editor,
+        revision_time=revision_time,
+        revision_name_from_link=revision_name_from_link,
+        ongoing_tasks_count=ongoing_tasks_count,
+        delete_form=delete_draft_form,
+        delete_file_form=delete_file_form,
+        asf_id=session.uid,
+        server_domain=session.host,
+        format_datetime=routes.format_datetime,
+        models=models,
+    )
+
+
 async def create_release_draft(project_name: str, version: str, asf_uid: str) 
-> tuple[models.Release, models.Project]:
     """Creates the initial release draft record and revision directory."""
     # Get the project from the project name
@@ -652,98 +744,6 @@ async def hashgen(
     )
 
 
[email protected]("/draft/overview/<project_name>/<version_name>")
-async def overview(session: routes.CommitterSession, project_name: str, 
version_name: str) -> response.Response | str:
-    """Show an overview of the release candidate draft."""
-    if not any((p.name == project_name) for p in (await 
session.user_projects)):
-        return await session.redirect(add, error="You do not have access to 
this project")
-
-    async with db.session() as data:
-        release_name = models.release_name(project_name, version_name)
-        release = await data.release(
-            name=release_name, 
phase=models.ReleasePhase.RELEASE_CANDIDATE_DRAFT, _project=True
-        ).demand(base.ASFQuartException("Release does not exist", 
errorcode=404))
-        if release.revision is None:
-            raise base.ASFQuartException("This release does not have a 
revision.", errorcode=400)
-
-        base_path = util.get_release_candidate_draft_dir() / project_name / 
version_name / release.revision
-        paths = await util.paths_recursive(base_path)
-        path_templates = {}
-        path_substitutions = {}
-        path_artifacts = set()
-        path_metadata = set()
-        path_successes = {}
-        path_warnings = {}
-        path_errors = {}
-
-        for path in paths:
-            # Get template and substitutions
-            elements = {
-                "core": project_name,
-                "version": version_name,
-                "sub": None,
-                "template": None,
-                "substitutions": None,
-            }
-            template, substitutions = analysis.filename_parse(str(path), 
elements)
-            path_templates[path] = template
-            path_substitutions[path] = 
analysis.substitutions_format(substitutions) or "none"
-
-            # Get artifacts and metadata
-            search = re.search(analysis.extension_pattern(), str(path))
-            if search:
-                if search.group("artifact"):
-                    path_artifacts.add(path)
-                elif search.group("metadata"):
-                    path_metadata.add(path)
-
-            # Get successes, warnings, and errors
-            path_successes[path] = await data.check_result(
-                release_name=release.name, primary_rel_path=str(path), 
status=models.CheckResultStatus.SUCCESS
-            ).all()
-            path_warnings[path] = await data.check_result(
-                release_name=release.name, primary_rel_path=str(path), 
status=models.CheckResultStatus.WARNING
-            ).all()
-            path_errors[path] = await data.check_result(
-                release_name=release.name, primary_rel_path=str(path), 
status=models.CheckResultStatus.FAILURE
-            ).all()
-
-        revision_name_from_link, revision_editor, revision_time = await 
revision.latest_info(project_name, version_name)
-
-        # Get the number of ongoing tasks for the current revision
-        ongoing_tasks_count = 0
-        if revision_name_from_link:
-            ongoing_tasks_count = await db.tasks_ongoing(project_name, 
version_name, revision_name_from_link)
-
-    delete_draft_form = await DeleteForm.create_form()
-    delete_file_form = await DeleteFileForm.create_form()
-
-    return await quart.render_template(
-        "draft-overview.html",
-        project_name=project_name,
-        version_name=version_name,
-        release=release,
-        paths=paths,
-        artifacts=path_artifacts,
-        metadata=path_metadata,
-        successes=path_successes,
-        warnings=path_warnings,
-        errors=path_errors,
-        templates=path_templates,
-        substitutions=path_substitutions,
-        revision_editor=revision_editor,
-        revision_time=revision_time,
-        revision_name_from_link=revision_name_from_link,
-        ongoing_tasks_count=ongoing_tasks_count,
-        delete_form=delete_draft_form,
-        delete_file_form=delete_file_form,
-        asf_id=session.uid,
-        server_domain=session.host,
-        format_datetime=routes.format_datetime,
-        models=models,
-    )
-
-
 @routes.committer("/draft/revision/set/<project_name>/<version_name>", 
methods=["POST"])
 async def revision_set(session: routes.CommitterSession, project_name: str, 
version_name: str) -> response.Response:
     """Set a specific revision as the latest for a candidate draft."""
@@ -1161,7 +1161,7 @@ async def vote_start(
         # TODO: Consider relaxing this to all committers
         # Otherwise we must not show the vote form
         if not user.is_committee_member(release.committee, session.uid):
-            return await session.redirect(overview, error="You must be on the 
PMC of this project to start a vote")
+            return await session.redirect(content, error="You must be on the 
PMC of this project to start a vote")
         committee = util.unwrap(release.committee)
 
         sender = f"{session.uid}@apache.org"
diff --git a/atr/routes/release.py b/atr/routes/release.py
index 9dd6733..05071f1 100644
--- a/atr/routes/release.py
+++ b/atr/routes/release.py
@@ -137,7 +137,7 @@ async def start(session: routes.CommitterSession, 
project_name: str) -> response
             )[0]
             # Redirect to the new draft's overview page on success
             return await session.redirect(
-                draft.overview,
+                draft.content,
                 project_name=project.name,
                 version_name=new_release.version,
                 success="Release candidate draft created successfully",
diff --git a/atr/templates/draft-add-files.html 
b/atr/templates/draft-add-files.html
index dc60841..28a7162 100644
--- a/atr/templates/draft-add-files.html
+++ b/atr/templates/draft-add-files.html
@@ -9,7 +9,7 @@
 {% endblock description %}
 
 {% block content %}
-  <a href="{{ as_url(routes.draft.overview, project_name=project_name, 
version_name=version_name) }}"
+  <a href="{{ as_url(routes.draft.content, project_name=project_name, 
version_name=version_name) }}"
      class="back-link">← Back to {{ project_display_name }} {{ version_name 
}}</a>
 
   <h1>Add files to {{ project_display_name }} {{ version_name }}</h1>
diff --git a/atr/templates/draft-overview.html 
b/atr/templates/draft-content.html
similarity index 100%
rename from atr/templates/draft-overview.html
rename to atr/templates/draft-content.html
diff --git a/atr/templates/draft-vote-start.html 
b/atr/templates/draft-vote-start.html
index c6b1455..af8317d 100644
--- a/atr/templates/draft-vote-start.html
+++ b/atr/templates/draft-vote-start.html
@@ -105,7 +105,7 @@
 
       <div class="mt-4 col-md-9 offset-md-3">
         {{ form.submit(class_='btn btn-primary') }}
-        <a href="{{ as_url(routes.draft.overview, 
project_name=release.project.name, version_name=release.version) }}"
+        <a href="{{ as_url(routes.draft.content, 
project_name=release.project.name, version_name=release.version) }}"
            class="btn btn-link text-secondary">Cancel</a>
       </div>
     </form>
diff --git a/atr/templates/index-committer.html 
b/atr/templates/index-committer.html
index cd9bd4b..0b4e3ac 100644
--- a/atr/templates/index-committer.html
+++ b/atr/templates/index-committer.html
@@ -111,7 +111,7 @@
         <div class="d-flex flex-wrap gap-3">
           {% for release in active_releases %}
             {% set current_phase_index = phase_index_map.get(release.phase, 
-1) %}
-            {% set release_link = as_url(routes.draft.overview, 
project_name=release.project.name, version_name=release.version) if 
release.phase.value == "release_candidate_draft" else 
as_url(routes.candidate.view, project_name=release.project.name, 
version_name=release.version) %}
+            {% set release_link = as_url(routes.draft.content, 
project_name=release.project.name, version_name=release.version) if 
release.phase.value == "release_candidate_draft" else 
as_url(routes.candidate.view, project_name=release.project.name, 
version_name=release.version) %}
 
             <a href="{{ release_link }}" class="text-decoration-none">
               <div class="card h-100 shadow-sm hover-lift atr-cursor-pointer 
page-card">
diff --git a/playwright/test.py b/playwright/test.py
index 96794cf..4413dd5 100644
--- a/playwright/test.py
+++ b/playwright/test.py
@@ -587,8 +587,8 @@ def test_lifecycle_01_add_draft(page: sync_api.Page, 
credentials: Credentials) -
     sync_api.expect(submit_button_locator).to_be_enabled()
     submit_button_locator.click()
 
-    logging.info("Waiting for navigation to 
/draft/overview/tooling-test-example/0.1 after adding draft")
-    wait_for_path(page, "/draft/overview/tooling-test-example/0.1")
+    logging.info("Waiting for navigation to 
/draft/content/tooling-test-example/0.1 after adding draft")
+    wait_for_path(page, "/draft/content/tooling-test-example/0.1")
     logging.info("Add draft actions completed successfully")
 
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to