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 52de920  Move import from SVN to the release writer interface
52de920 is described below

commit 52de920db05bbc60ee071f56fcf9a2957eb14af4
Author: Sean B. Palmer <[email protected]>
AuthorDate: Thu Sep 11 14:18:39 2025 +0100

    Move import from SVN to the release writer interface
---
 atr/routes/draft.py            | 29 ++++++++---------------------
 atr/storage/writers/release.py | 25 +++++++++++++++++++++++++
 2 files changed, 33 insertions(+), 21 deletions(-)

diff --git a/atr/routes/draft.py b/atr/routes/draft.py
index fe35546..7b9ce45 100644
--- a/atr/routes/draft.py
+++ b/atr/routes/draft.py
@@ -31,7 +31,6 @@ import quart
 
 import atr.analysis as analysis
 import atr.construct as construct
-import atr.db as db
 import atr.forms as forms
 import atr.log as log
 import atr.models.sql as sql
@@ -334,27 +333,15 @@ async def svnload(session: routes.CommitterSession, 
project_name: str, version_n
         )
 
     try:
-        task_args = {
-            "svn_url": str(form.svn_url.data),
-            "revision": str(form.revision.data),
-            "target_subdirectory": str(form.target_subdirectory.data) if 
form.target_subdirectory.data else None,
-            "project_name": project_name,
-            "version_name": version_name,
-            "asf_uid": session.uid,
-        }
-        # TODO: Move this to the storage interface
-        async with db.session() as data:
-            svn_import_task = sql.Task(
-                task_type=sql.TaskType.SVN_IMPORT_FILES,
-                task_args=task_args,
-                asf_uid=util.unwrap(session.uid),
-                added=datetime.datetime.now(datetime.UTC),
-                status=sql.TaskStatus.QUEUED,
-                project_name=project_name,
-                version_name=version_name,
+        async with storage.write(session.uid) as write:
+            wacp = await write.as_project_committee_member(project_name)
+            await wacp.release.import_from_svn(
+                project_name,
+                version_name,
+                str(form.svn_url.data),
+                str(form.revision.data),
+                str(form.target_subdirectory.data) if 
form.target_subdirectory.data else None,
             )
-            data.add(svn_import_task)
-            await data.commit()
 
     except Exception:
         log.exception("Error queueing SVN import task:")
diff --git a/atr/storage/writers/release.py b/atr/storage/writers/release.py
index b0b2475..9b050aa 100644
--- a/atr/storage/writers/release.py
+++ b/atr/storage/writers/release.py
@@ -89,6 +89,31 @@ class CommitteeParticipant(FoundationCommitter):
         ) as _creating:
             yield _creating
 
+    async def import_from_svn(
+        self, project_name: str, version_name: str, svn_url: str, revision: 
str, target_subdirectory: str | None
+    ) -> sql.Task:
+        task_args = {
+            "svn_url": svn_url,
+            "revision": revision,
+            "target_subdirectory": target_subdirectory,
+            "project_name": project_name,
+            "version_name": version_name,
+            "asf_uid": self.__asf_uid,
+        }
+        svn_import_task = sql.Task(
+            task_type=sql.TaskType.SVN_IMPORT_FILES,
+            task_args=task_args,
+            asf_uid=util.unwrap(self.__asf_uid),
+            added=datetime.datetime.now(datetime.UTC),
+            status=sql.TaskStatus.QUEUED,
+            project_name=project_name,
+            version_name=version_name,
+        )
+        self.__data.add(svn_import_task)
+        await self.__data.commit()
+        await self.__data.refresh(svn_import_task)
+        return svn_import_task
+
     async def start(self, project_name: str, version: str) -> 
tuple[sql.Release, sql.Project]:
         """Creates the initial release draft record and revision directory."""
         # Get the project from the project name


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

Reply via email to