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

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


The following commit(s) were added to refs/heads/sbp by this push:
     new 12ff090f Propagate file upload errors through to the user interface
12ff090f is described below

commit 12ff090fdb29116c812da3ea69b47010423d3595
Author: Sean B. Palmer <[email protected]>
AuthorDate: Fri Feb 13 18:53:35 2026 +0000

    Propagate file upload errors through to the user interface
---
 atr/post/upload.py             | 20 +++++++++++++++++++-
 atr/storage/writers/release.py |  5 +++--
 2 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/atr/post/upload.py b/atr/post/upload.py
index 1fd75d27..c13548e8 100644
--- a/atr/post/upload.py
+++ b/atr/post/upload.py
@@ -76,6 +76,14 @@ async def finalise(
 
         await aioshutil.rmtree(staging_dir)
 
+        if creating.failed is not None:
+            await quart.flash(str(creating.failed), "error")
+            return await session.redirect(
+                get.upload.selected,
+                project_name=project_name,
+                version_name=version_name,
+            )
+
         return await session.redirect(
             get.compose.selected,
             success=f"{util.plural(number_of_files, 'file')} added 
successfully",
@@ -154,7 +162,17 @@ async def _add_files(
 
         async with storage.write(session) as write:
             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)
+            creation_error, number_of_files = await wacp.release.upload_files(
+                project_name, version_name, file_name, file_data
+            )
+
+        if creation_error is not None:
+            await quart.flash(creation_error, "error")
+            return await session.redirect(
+                get.upload.selected,
+                project_name=project_name,
+                version_name=version_name,
+            )
 
         return await session.redirect(
             get.compose.selected,
diff --git a/atr/storage/writers/release.py b/atr/storage/writers/release.py
index 111a5bf9..0bcc836b 100644
--- a/atr/storage/writers/release.py
+++ b/atr/storage/writers/release.py
@@ -454,7 +454,7 @@ class CommitteeParticipant(FoundationCommitter):
         version_name: str,
         file_name: pathlib.Path | None,
         files: Sequence[datastructures.FileStorage],
-    ) -> int:
+    ) -> tuple[str | None, int]:
         """Process and save the uploaded files into a new draft revision."""
         number_of_files = len(files)
         description = f"Upload of {util.plural(number_of_files, 'file')} 
through web interface"
@@ -479,7 +479,8 @@ class CommitteeParticipant(FoundationCommitter):
                 # Ensure parent directories exist within the new revision
                 await aiofiles.os.makedirs(target_path.parent, exist_ok=True)
                 await self.__save_file(file, target_path)
-        return len(files)
+        creation_error = str(creating.failed) if (creating.failed is not None) 
else None
+        return creation_error, len(files)
 
     async def __current_paths(self, creating: types.Creating) -> 
list[pathlib.Path]:
         all_current_paths_interim: list[pathlib.Path] = []


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

Reply via email to