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 9d6c370  Fix a form saving bug caused by using a detached database 
object
9d6c370 is described below

commit 9d6c370985de508bdd11ea02004a61df838a1f8c
Author: Sean B. Palmer <[email protected]>
AuthorDate: Wed Nov 5 19:08:44 2025 +0000

    Fix a form saving bug caused by using a detached database object
---
 atr/shared/projects.py        | 4 ++--
 atr/storage/writers/policy.py | 6 +++++-
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/atr/shared/projects.py b/atr/shared/projects.py
index 8cf3ffd..6e5c117 100644
--- a/atr/shared/projects.py
+++ b/atr/shared/projects.py
@@ -277,12 +277,12 @@ async def view(session: web.Committer, name: str) -> 
web.WerkzeugResponse | str:
                 async with storage.write(session) as write:
                     wacm = await 
write.as_project_committee_member(project.name)
                     try:
-                        await wacm.policy.edit(project, policy_data)
+                        await wacm.policy.edit(project.name, policy_data)
                     except storage.AccessError as e:
                         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))
+                return quart.redirect(util.as_url(get.projects.view, 
name=project.name))
             else:
                 log.info(f"policy_form.errors: {policy_form.errors}")
         else:
diff --git a/atr/storage/writers/policy.py b/atr/storage/writers/policy.py
index bde021d..90ddc5e 100644
--- a/atr/storage/writers/policy.py
+++ b/atr/storage/writers/policy.py
@@ -86,7 +86,11 @@ class CommitteeMember(CommitteeParticipant):
         self.__asf_uid = asf_uid
         self.__committee_name = committee_name
 
-    async def edit(self, project: models.sql.Project, policy_data: 
models.policy.ReleasePolicyData) -> None:
+    async def edit(self, project_name: str, policy_data: 
models.policy.ReleasePolicyData) -> None:
+        project = await self.__data.project(
+            name=project_name, status=models.sql.ProjectStatus.ACTIVE, 
_release_policy=True
+        ).demand(storage.AccessError(f"Project {project_name} not found"))
+
         release_policy = project.release_policy
         if release_policy is None:
             release_policy = models.sql.ReleasePolicy(project=project)


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

Reply via email to