Skip to content

Commit da15df2

Browse files
author
Andrei Neagu
committed
accerrrightserror now points to the file which does not have access
1 parent 972425c commit da15df2

File tree

3 files changed

+22
-18
lines changed

3 files changed

+22
-18
lines changed

packages/models-library/src/models_library/api_schemas_storage/export_data_async_jobs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@ class InvalidFileIdentifierError(StorageRpcBaseError):
1515

1616
class AccessRightError(StorageRpcBaseError):
1717
msg_template: str = (
18-
"User {user_id} does not have access to one or multiple files in {paths_to_download} with location {location_id}"
18+
"User {user_id} does not have access to file {file_id} with location {location_id}"
1919
)

services/storage/src/simcore_service_storage/api/_worker_tasks/_simcore_s3.py

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,13 @@
44

55
from aws_library.s3._models import S3ObjectKey
66
from celery import Task # type: ignore[import-untyped]
7-
from models_library.api_schemas_storage.export_data_async_jobs import AccessRightError
87
from models_library.api_schemas_storage.storage_schemas import FoldersBody
98
from models_library.progress_bar import ProgressReport
109
from models_library.projects_nodes_io import StorageFileID
1110
from models_library.users import UserID
1211
from pydantic import TypeAdapter
1312
from servicelib.logging_utils import log_context
1413
from servicelib.progress_bar import ProgressBarData
15-
from simcore_service_storage.exceptions.errors import ProjectAccessRightError
1614

1715
from ...dsm import get_dsm_provider
1816
from ...modules.celery.models import TaskID, TaskId
@@ -69,6 +67,9 @@ async def export_data(
6967
user_id: UserID,
7068
paths_to_export: list[S3ObjectKey],
7169
) -> StorageFileID:
70+
"""
71+
AccessRightError: in case user can't access project
72+
"""
7273
with log_context(
7374
_logger,
7475
logging.INFO,
@@ -94,13 +95,6 @@ async def _progress_cb(report: ProgressReport) -> None:
9495
description=f"'{task_id}' export data",
9596
progress_report_cb=_progress_cb,
9697
) as progress_bar:
97-
try:
98-
return await dsm.create_s3_export(
99-
user_id, paths_to_export, progress_bar=progress_bar
100-
)
101-
except ProjectAccessRightError as err:
102-
raise AccessRightError(
103-
user_id=user_id,
104-
paths_to_download=paths_to_export,
105-
location_id=SimcoreS3DataManager.get_location_id(),
106-
) from err
98+
return await dsm.create_s3_export(
99+
user_id, paths_to_export, progress_bar=progress_bar
100+
)

services/storage/src/simcore_service_storage/simcore_s3_dsm.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
)
2020
from aws_library.s3._models import S3ObjectKey
2121
from fastapi import FastAPI
22+
from models_library.api_schemas_storage.export_data_async_jobs import AccessRightError
2223
from models_library.api_schemas_storage.storage_schemas import (
2324
UNDEFINED_SIZE,
2425
UNDEFINED_SIZE_TYPE,
@@ -1256,12 +1257,21 @@ async def create_s3_export(
12561257
with contextlib.suppress(ValueError):
12571258
project_id = ProjectID(Path(object_key).parts[0])
12581259

1259-
accessible_projects_ids = await get_accessible_project_ids(
1260-
get_db_engine(self.app), user_id=user_id, project_id=project_id
1261-
)
1260+
try:
1261+
accessible_projects_ids = await get_accessible_project_ids(
1262+
get_db_engine(self.app), user_id=user_id, project_id=project_id
1263+
)
1264+
except ProjectAccessRightError as err:
1265+
raise AccessRightError(
1266+
user_id=user_id,
1267+
file_id=object_key,
1268+
location_id=SimcoreS3DataManager.get_location_id(),
1269+
) from err
12621270
if project_id is None or project_id not in accessible_projects_ids:
1263-
raise ProjectAccessRightError(
1264-
access_right="read", project_id=project_id
1271+
raise AccessRightError(
1272+
user_id=user_id,
1273+
file_id=object_key,
1274+
location_id=SimcoreS3DataManager.get_location_id(),
12651275
)
12661276

12671277
for object_key in object_keys:

0 commit comments

Comments
 (0)