Skip to content

Commit 801a285

Browse files
🎨 Clean up webserver exception types (ITISFoundation#5612)
1 parent 7f25edf commit 801a285

File tree

3 files changed

+13
-55
lines changed

3 files changed

+13
-55
lines changed

‎services/api-server/src/simcore_service_api_server/api/routes/solvers_jobs_getters.py‎

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
from ...services.solver_job_models_converters import create_job_from_project
3838
from ...services.solver_job_outputs import ResultsTypes, get_solver_output_results
3939
from ...services.storage import StorageApi, to_file_api_model
40-
from ...services.webserver import ProjectNotFoundError
4140
from ..dependencies.application import get_reverse_url_mapper
4241
from ..dependencies.authentication import get_current_user_id, get_product_name
4342
from ..dependencies.database import Engine, get_db_engine
@@ -385,21 +384,13 @@ async def get_job_wallet(
385384
version: VersionStr,
386385
job_id: JobID,
387386
webserver_api: Annotated[AuthSession, Depends(get_webserver_session)],
388-
):
387+
) -> WalletGetWithAvailableCredits | None:
389388
job_name = _compose_job_resource_name(solver_key, version, job_id)
390389
_logger.debug("Getting wallet for job '%s'", job_name)
391390

392-
try:
393-
project_wallet = await webserver_api.get_project_wallet(project_id=job_id)
394-
if project_wallet:
395-
return await webserver_api.get_wallet(wallet_id=project_wallet.wallet_id)
396-
return None
397-
398-
except ProjectNotFoundError:
399-
return create_error_json_response(
400-
f"Cannot find job={job_name}",
401-
status_code=status.HTTP_404_NOT_FOUND,
402-
)
391+
if project_wallet := await webserver_api.get_project_wallet(project_id=job_id):
392+
return await webserver_api.get_wallet(wallet_id=project_wallet.wallet_id)
393+
return None
403394

404395

405396
@router.get(

‎services/api-server/src/simcore_service_api_server/api/routes/studies.py‎

Lines changed: 9 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,8 @@
88
from ...models.pagination import OnePage, Page, PaginationParams
99
from ...models.schemas.errors import ErrorGet
1010
from ...models.schemas.studies import Study, StudyID, StudyPort
11-
from ...services.webserver import AuthSession, ProjectNotFoundError
11+
from ...services.webserver import AuthSession
1212
from ..dependencies.webserver import get_webserver_session
13-
from ..errors.http_error import create_error_json_response
1413
from ._common import API_SERVER_DEV_FEATURES_ENABLED
1514

1615
_logger = logging.getLogger(__name__)
@@ -76,15 +75,8 @@ async def get_study(
7675
7776
New in *version 0.5.0* (only with API_SERVER_DEV_FEATURES_ENABLED=1)
7877
"""
79-
try:
80-
project: ProjectGet = await webserver_api.get_project(project_id=study_id)
81-
return _create_study_from_project(project)
82-
83-
except ProjectNotFoundError:
84-
return create_error_json_response(
85-
f"Cannot find study={study_id!r}.",
86-
status_code=status.HTTP_404_NOT_FOUND,
87-
)
78+
project: ProjectGet = await webserver_api.get_project(project_id=study_id)
79+
return _create_study_from_project(project)
8880

8981

9082
@router.post(
@@ -98,15 +90,8 @@ async def clone_study(
9890
study_id: StudyID,
9991
webserver_api: Annotated[AuthSession, Depends(get_webserver_session)],
10092
):
101-
try:
102-
project: ProjectGet = await webserver_api.clone_project(project_id=study_id)
103-
return _create_study_from_project(project)
104-
105-
except ProjectNotFoundError:
106-
return create_error_json_response(
107-
f"Cannot find study={study_id!r}.",
108-
status_code=status.HTTP_404_NOT_FOUND,
109-
)
93+
project: ProjectGet = await webserver_api.clone_project(project_id=study_id)
94+
return _create_study_from_project(project)
11095

11196

11297
@router.get(
@@ -123,14 +108,7 @@ async def list_study_ports(
123108
124109
New in *version 0.5.0* (only with API_SERVER_DEV_FEATURES_ENABLED=1)
125110
"""
126-
try:
127-
project_ports: list[StudyPort] = await webserver_api.get_project_metadata_ports(
128-
project_id=study_id
129-
)
130-
return OnePage[StudyPort](items=project_ports)
131-
132-
except ProjectNotFoundError:
133-
return create_error_json_response(
134-
f"Cannot find study={study_id!r}.",
135-
status_code=status.HTTP_404_NOT_FOUND,
136-
)
111+
project_ports: list[StudyPort] = await webserver_api.get_project_metadata_ports(
112+
project_id=study_id
113+
)
114+
return OnePage[StudyPort](items=project_ports)

‎services/api-server/src/simcore_service_api_server/services/webserver.py‎

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
from models_library.rest_pagination import Page
3434
from models_library.utils.fastapi_encoders import jsonable_encoder
3535
from pydantic import PositiveInt
36-
from pydantic.errors import PydanticErrorMixin
3736
from servicelib.aiohttp.long_running_tasks.server import TaskStatus
3837
from simcore_service_api_server.models.schemas.solvers import SolverKeyId
3938
from simcore_service_api_server.models.schemas.studies import StudyPort
@@ -57,16 +56,6 @@
5756

5857
_logger = logging.getLogger(__name__)
5958

60-
61-
class WebServerValueError(PydanticErrorMixin, ValueError):
62-
...
63-
64-
65-
class ProjectNotFoundError(WebServerValueError):
66-
code = "webserver.project_not_found"
67-
msg_template = "Project '{project_id}' not found"
68-
69-
7059
_exception_mapper = partial(service_exception_mapper, "Webserver")
7160

7261
_JOB_STATUS_MAP: Mapping = {

0 commit comments

Comments
 (0)