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-releases.git
The following commit(s) were added to refs/heads/main by this push:
new e354d17 Fix several route reference bugs
e354d17 is described below
commit e354d17c8b3c9c8303f45971bca90380cbeb8e27
Author: Sean B. Palmer <[email protected]>
AuthorDate: Wed Oct 29 22:51:51 2025 +0000
Fix several route reference bugs
---
README.md | 18 +++++++++---------
atr/shared/finish.py | 2 +-
atr/shared/projects.py | 15 +++++++++------
atr/shared/start.py | 4 ++--
atr/shared/tokens.py | 7 ++++---
atr/shared/upload.py | 4 ++--
6 files changed, 27 insertions(+), 23 deletions(-)
diff --git a/README.md b/README.md
index 9a3b2f8..c09e23d 100644
--- a/README.md
+++ b/README.md
@@ -13,30 +13,30 @@
This repository contains code developed by the **Apache Software Foundation
(ASF) Tooling team**.
-As of **October 2025**, this code is available for **internal ASF feedback
only**.
+As of **October 2025**, this code is available for **internal ASF feedback
only**.
The project is in **alpha development** and subject to significant changes.
-We welcome feedback and discussion, but note that many known issues and design
refinements are already scheduled for future iterations.
+We welcome feedback and discussion, but note that many known issues and design
refinements are already scheduled for future iterations.
Please review our [issue
tracker](https://github.com/apache/tooling-trusted-releases/issues) and inline
comments before filing new issues.
-The alpha test deployment is available at:
+The alpha test deployment is available at:
🔗 <https://release-test.apache.org/>
-> **Note:** This repository is not yet an officially maintained or endorsed
ASF project.
-> It does not represent final technical or policy decisions for future ASF
Tooling products.
+> **Note:** This repository is not yet an officially maintained or endorsed
ASF project.
+> It does not represent final technical or policy decisions for future ASF
Tooling products.
> The code is provided without guarantees regarding stability, security, or
> backward compatibility.
## Getting Involved
-Community feedback is encouraged!
+Community feedback is encouraged!
If you are an ASF committer or contributor interested in Trusted Releases:
1. **Try it out** – The alpha test server allows you to experiment with the
release process for your ASF project.
-2. **Introduce yourself** on the development mailing list:
+2. **Introduce yourself** on the development mailing list:
📧 [[email protected]](mailto:[email protected])
-3. **Share ideas or file issues:**
+3. **Share ideas or file issues:**
Use the [GitHub
Issues](https://github.com/apache/tooling-trusted-releases/issues) page to
report bugs, suggest features, or discuss improvements.
## License
@@ -45,5 +45,5 @@ This project is licensed under the [Apache License, Version
2.0](LICENSE).
---
-*Part of the [Apache Tooling Initiative](https://tooling.apache.org/).*
+*Part of the [Apache Tooling Initiative](https://tooling.apache.org/).*
For more information about the ASF, visit
[https://www.apache.org/](https://www.apache.org/).
diff --git a/atr/shared/finish.py b/atr/shared/finish.py
index c197946..8033ea3 100644
--- a/atr/shared/finish.py
+++ b/atr/shared/finish.py
@@ -120,7 +120,7 @@ async def selected(
if wants_json:
return quart.jsonify(ok=ok, message=msg), http_status
await quart.flash(msg, "success" if ok else "error")
- return await session.redirect(selected, project_name=project_name,
version_name=version_name)
+ return await session.redirect(get.finish.selected,
project_name=project_name, version_name=version_name)
async with db.session() as data:
release = await data.release(
diff --git a/atr/shared/projects.py b/atr/shared/projects.py
index 18e9017..1a98c87 100644
--- a/atr/shared/projects.py
+++ b/atr/shared/projects.py
@@ -28,6 +28,7 @@ import quart
import atr.db as db
import atr.db.interaction as interaction
import atr.forms as forms
+import atr.get as get
import atr.log as log
import atr.models.policy as policy
import atr.models.sql as sql
@@ -271,7 +272,7 @@ async def view(session: web.Committer, name: str) ->
response.Response | str:
if "submit_metadata" in form_data:
edited_metadata, metadata_form = await _metadata_edit(session,
project, form_data)
if edited_metadata is True:
- return quart.redirect(util.as_url(view, name=project.name))
+ return quart.redirect(util.as_url(get.projects.view,
name=project.name))
elif "submit_policy" in form_data:
policy_form = await ReleasePolicyForm.create_form(data=form_data)
if await policy_form.validate_on_submit():
@@ -281,8 +282,10 @@ async def view(session: web.Committer, name: str) ->
response.Response | str:
try:
await wacm.policy.edit(project, policy_data)
except storage.AccessError as e:
- return await session.redirect(view, name=project.name,
error=f"Error editing policy: {e}")
- return quart.redirect(util.as_url(view, name=project.name))
+ return await session.redirect(
+ get.projects.view, name=project.name,
error=f"Error editing policy: {e}"
+ )
+ return quart.redirect(util.as_url(get.projects.view,
name=project.name))
else:
log.info(f"policy_form.errors: {policy_form.errors}")
else:
@@ -450,7 +453,7 @@ async def _policy_form_create(project: sql.Project) ->
ReleasePolicyForm:
async def _project_add(form: AddForm, session: web.Committer) ->
response.Response:
form_values = await _project_add_validate(form)
if form_values is None:
- return quart.redirect(util.as_url(add_project,
committee_name=form.committee_name.data))
+ return quart.redirect(util.as_url(get.projects.add_project,
committee_name=form.committee_name.data))
committee_name, display_name, label = form_values
async with storage.write(session) as write:
@@ -459,9 +462,9 @@ async def _project_add(form: AddForm, session:
web.Committer) -> response.Respon
await wacm.project.create(committee_name, display_name, label)
except storage.AccessError as e:
await quart.flash(f"Error adding project: {e}", "error")
- return quart.redirect(util.as_url(add_project,
committee_name=committee_name))
+ return quart.redirect(util.as_url(get.projects.add_project,
committee_name=committee_name))
- return quart.redirect(util.as_url(view, name=label))
+ return quart.redirect(util.as_url(get.projects.view, name=label))
async def _project_add_validate(form: AddForm) -> tuple[str, str, str] | None:
diff --git a/atr/shared/start.py b/atr/shared/start.py
index cb00313..f7eccdc 100644
--- a/atr/shared/start.py
+++ b/atr/shared/start.py
@@ -23,7 +23,7 @@ import werkzeug.wrappers.response as response
import atr.db as db
import atr.db.interaction as interaction
import atr.forms as forms
-import atr.get.compose as compose
+import atr.get as get
import atr.models.sql as sql
import atr.storage as storage
import atr.template as template
@@ -65,7 +65,7 @@ async def selected(session: web.Committer, project_name: str)
-> response.Respon
new_release, _project = await wacp.release.start(project_name,
version)
# Redirect to the new draft's overview page on success
return await session.redirect(
- compose.selected,
+ get.compose.selected,
project_name=project.name,
version_name=new_release.version,
success="Release candidate draft created successfully",
diff --git a/atr/shared/tokens.py b/atr/shared/tokens.py
index 93965b7..9525adc 100644
--- a/atr/shared/tokens.py
+++ b/atr/shared/tokens.py
@@ -31,6 +31,7 @@ import wtforms.fields.core as core
import atr.db as db
import atr.forms as forms
+import atr.get as get
import atr.htm as htm
import atr.jwtoken as jwtoken
import atr.log as log
@@ -255,7 +256,7 @@ async def _handle_add_token_post(
htm.p(".mb-0")["Copy it now as you will not be able to see it
again."],
]
await quart.flash(_as_markup(success_msg), "success")
- return await session.redirect(tokens)
+ return await session.redirect(get.tokens.tokens)
return None
@@ -268,7 +269,7 @@ async def _handle_delete_token_post(
token_id_val = int(str(del_form.token_id.data))
await _delete_token(session.uid, token_id_val)
await quart.flash("Token deleted successfully", "success")
- return await session.redirect(tokens)
+ return await session.redirect(get.tokens.tokens)
await quart.flash("Invalid delete request", "error")
return None
@@ -288,6 +289,6 @@ async def _handle_issue_jwt_post(
htm.p[htm.code(".bg-light.border.rounded.px-1.atr-word-wrap")[jwt_token],],
]
await quart.flash(_as_markup(success_msg), "success")
- return await session.redirect(tokens)
+ return await session.redirect(get.tokens.tokens)
return None
diff --git a/atr/shared/upload.py b/atr/shared/upload.py
index f554f46..0321898 100644
--- a/atr/shared/upload.py
+++ b/atr/shared/upload.py
@@ -23,7 +23,7 @@ import wtforms
import atr.db as db
import atr.forms as forms
-import atr.get.compose as compose
+import atr.get as get
import atr.log as log
import atr.storage as storage
import atr.template as template
@@ -77,7 +77,7 @@ async def selected(session: web.Committer, project_name: str,
version_name: str)
wacp = await
write.as_project_committee_participant(project_name)
number_of_files = await
wacp.release.upload_files(project_name, version_name, file_name, file_data)
return await session.redirect(
- compose.selected,
+ get.compose.selected,
success=f"{number_of_files} file{'' if number_of_files == 1
else 's'} added successfully",
project_name=project_name,
version_name=version_name,
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]