Skip to content

Commit ed1eb11

Browse files
committed
project patch extended moved
1 parent ff8db09 commit ed1eb11

File tree

5 files changed

+14
-37
lines changed

5 files changed

+14
-37
lines changed

packages/models-library/src/models_library/api_schemas_webserver/projects.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -146,11 +146,6 @@ class ProjectPatch(InputSchema):
146146
quality: dict[str, Any] = FieldNotRequired()
147147

148148

149-
class ProjectPatchExtended(ProjectPatch):
150-
# Only used internally
151-
trashed_at: datetime | None = None
152-
153-
154149
__all__: tuple[str, ...] = (
155150
"EmptyModel",
156151
"ProjectCopyOverride",

services/web/server/src/simcore_service_webserver/projects/_trash_api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import arrow
22
from aiohttp import web
3-
from models_library.api_schemas_webserver.projects import ProjectPatchExtended
43
from models_library.products import ProductName
54
from models_library.projects import ProjectID
65
from models_library.users import UserID
76

87
from . import projects_api
8+
from .models import ProjectPatchExtended
99

1010

1111
async def empty_trash(app: web.Application, product_name: ProductName, user_id: UserID):

services/web/server/src/simcore_service_webserver/projects/_trash_handlers.py

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,6 @@
1-
import functools
2-
31
from aiohttp import web
42
from servicelib.aiohttp import status
53
from servicelib.aiohttp.requests_validation import parse_request_path_parameters_as
6-
from servicelib.aiohttp.typing_extension import Handler
7-
from simcore_postgres_database.utils_tags import (
8-
TagNotFoundError,
9-
TagOperationNotAllowedError,
10-
)
114

125
from .._meta import API_VTAG as VTAG
136
from ..login.decorators import get_user_id, login_required
@@ -16,29 +9,12 @@
169
from ..security.decorators import permission_required
1710
from . import _trash_api
1811

19-
20-
def _handle_trash_exceptions(handler: Handler):
21-
@functools.wraps(handler)
22-
async def wrapper(request: web.Request) -> web.StreamResponse:
23-
try:
24-
return await handler(request)
25-
26-
except TagNotFoundError as exc:
27-
raise web.HTTPNotFound(reason=f"{exc}") from exc
28-
29-
except TagOperationNotAllowedError as exc:
30-
raise web.HTTPForbidden(reason=f"{exc}") from exc
31-
32-
return wrapper
33-
34-
3512
routes = web.RouteTableDef()
3613

3714

3815
@routes.delete(f"/{VTAG}/trash", name="empty_trash")
3916
@login_required
4017
@permission_required("project.delete")
41-
@_handle_trash_exceptions
4218
async def empty_trash(request: web.Request):
4319
user_id = get_user_id(request)
4420
product_name = get_product_name(request)
@@ -58,7 +34,6 @@ async def empty_trash(request: web.Request):
5834
@routes.post(f"/{VTAG}/projects/{{project_id}}:trash", name="trash_project")
5935
@login_required
6036
@permission_required("project.delete")
61-
@_handle_trash_exceptions
6237
async def trash_project(request: web.Request):
6338
user_id = get_user_id(request)
6439
product_name = get_product_name(request)

services/web/server/src/simcore_service_webserver/projects/models.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from typing import Any, TypeAlias
44

55
from aiopg.sa.result import RowProxy
6+
from models_library.api_schemas_webserver.projects import ProjectPatch
67
from models_library.basic_types import HttpUrlWithCustomMinLength
78
from models_library.folders import FolderID
89
from models_library.projects import ClassifierID, ProjectID
@@ -13,7 +14,7 @@
1314
none_to_empty_str_pre_validator,
1415
)
1516
from models_library.workspaces import WorkspaceID
16-
from pydantic import BaseModel, validator
17+
from pydantic import BaseModel, Extra, validator
1718
from simcore_postgres_database.models.projects import ProjectType, projects
1819

1920
ProjectDict: TypeAlias = dict[str, Any]
@@ -97,6 +98,15 @@ class Config:
9798
orm_mode = True
9899

99100

101+
class ProjectPatchExtended(ProjectPatch):
102+
# Only used internally
103+
trashed_at: datetime | None = None
104+
105+
class Config:
106+
allow_population_by_field_name = True
107+
extra = Extra.forbid
108+
109+
100110
__all__: tuple[str, ...] = (
101111
"ProjectDict",
102112
"ProjectProxy",

services/web/server/src/simcore_service_webserver/projects/projects_api.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,7 @@
3030
DynamicServiceStart,
3131
DynamicServiceStop,
3232
)
33-
from models_library.api_schemas_webserver.projects import (
34-
ProjectPatch,
35-
ProjectPatchExtended,
36-
)
33+
from models_library.api_schemas_webserver.projects import ProjectPatch
3734
from models_library.api_schemas_webserver.projects_nodes import NodePatch
3835
from models_library.basic_types import KeyIDStr
3936
from models_library.errors import ErrorDict
@@ -147,7 +144,7 @@
147144
ProjectTooManyProjectOpenedError,
148145
)
149146
from .lock import get_project_locked_state, is_project_locked, lock_project
150-
from .models import ProjectDict
147+
from .models import ProjectDict, ProjectPatchExtended
151148
from .settings import ProjectsSettings, get_plugin_settings
152149
from .utils import extract_dns_without_default_port
153150

0 commit comments

Comments
 (0)