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]