Skip to content

Commit c1b4c57

Browse files
committed
domain to schema
1 parent b478207 commit c1b4c57

File tree

13 files changed

+37
-36
lines changed

13 files changed

+37
-36
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
from ..projects import ClassifierID, DateTimeStr, NodesDict, ProjectID
2929
from ..projects_access import AccessRights, GroupIDStr
3030
from ..projects_state import ProjectState
31-
from ..projects_ui import StudyUI
3231
from ..utils._original_fastapi_encoders import jsonable_encoder
3332
from ..utils.common_validators import (
3433
empty_str_to_none_pre_validator,
@@ -38,6 +37,7 @@
3837
from ..workspaces import WorkspaceID
3938
from ._base import EmptyModel, InputSchema, OutputSchema
4039
from .permalinks import ProjectPermalink
40+
from .projects_ui import StudyUI
4141

4242

4343
class ProjectCreateNew(InputSchema):
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from typing import Annotated, TypeAlias
2+
3+
from pydantic import BaseModel, ConfigDict, Field, PlainSerializer
4+
from pydantic_extra_types.color import Color
5+
6+
from ..projects_nodes_layout import Position
7+
8+
PositionUI: TypeAlias = Position
9+
10+
11+
class MarkerUI(BaseModel):
12+
color: Annotated[Color, PlainSerializer(Color.as_hex), Field(...)]
13+
14+
model_config = ConfigDict(extra="forbid")

packages/models-library/src/models_library/projects_ui.py renamed to packages/models-library/src/models_library/api_schemas_webserver/projects_ui.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818
TypedDict,
1919
)
2020

21-
from .projects_nodes_io import NodeID, NodeIDStr
21+
from ..projects_nodes_io import NodeID, NodeIDStr
22+
from ..utils.common_validators import empty_str_to_none_pre_validator
2223
from .projects_nodes_ui import MarkerUI, PositionUI
23-
from .utils.common_validators import empty_str_to_none_pre_validator
2424

2525

2626
class WorkbenchUI(BaseModel):

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
from .projects_nodes import Node
2121
from .projects_nodes_io import NodeIDStr
2222
from .projects_state import ProjectState
23-
from .projects_ui import StudyUI
2423
from .users import UserID
2524
from .utils.common_validators import (
2625
empty_str_to_none_pre_validator,
@@ -117,6 +116,9 @@ def _convert_sql_alchemy_enum(cls, v):
117116
)
118117

119118

119+
StudyUIDict: TypeAlias = dict[str, Any]
120+
121+
120122
class Project(BaseProjectModel):
121123
# NOTE: This is the pydantic pendant of project-v0.0.1.json used in the API of the webserver/webclient
122124
# NOT for usage with DB!!
@@ -160,7 +162,7 @@ class Project(BaseProjectModel):
160162
state: ProjectState | None = None
161163

162164
# UI front-end setup (SEE projects_ui.py)
163-
ui: StudyUI | None = None
165+
ui: StudyUIDict | None = None
164166

165167
# Quality
166168
quality: dict[str, Any] = Field(

packages/models-library/src/models_library/projects_nodes.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
PortLink,
2828
SimCoreFileLink,
2929
)
30-
from .projects_nodes_ui import PositionUI
30+
from .projects_nodes_layout import Position
3131
from .projects_state import RunningState
3232
from .services import ServiceKey, ServiceVersion
3333

@@ -224,7 +224,7 @@ class Node(BaseModel):
224224
] = None
225225

226226
position: Annotated[
227-
PositionUI | None,
227+
Position | None,
228228
Field(
229229
deprecated=True,
230230
description="Use projects_ui.WorkbenchUI.position instead",
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from pydantic import BaseModel, ConfigDict, Field
2+
3+
4+
class Position(BaseModel):
5+
x: int = Field(..., description="The x position", examples=[["12"]])
6+
y: int = Field(..., description="The y position", examples=[["15"]])
7+
8+
model_config = ConfigDict(extra="forbid")

packages/models-library/src/models_library/projects_nodes_ui.py

Lines changed: 0 additions & 21 deletions
This file was deleted.

packages/models-library/tests/test_projects_nodes_ui.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import pytest
2-
from models_library.projects_nodes_ui import MarkerUI
2+
from models_library.api_schemas_webserver.projects_nodes_ui import MarkerUI
33
from pydantic_extra_types.color import Color
44

55

packages/models-library/tests/test_projects_ui.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import pytest
2-
from models_library.projects_ui import AnnotationUI
2+
from models_library.api_schemas_webserver.projects_ui import AnnotationUI
33
from pydantic_extra_types.color import Color
44

55

services/api-server/src/simcore_service_api_server/models/domain/projects.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,17 @@
33
from models_library.projects_access import AccessRights
44
from models_library.projects_nodes import InputTypes, Node, OutputTypes
55
from models_library.projects_nodes_io import SimCoreFileLink
6-
from models_library.projects_ui import StudyUI
76

87
assert AccessRights # nosec
98
assert InputTypes # nosec
109
assert Node # nosec
1110
assert OutputTypes # nosec
1211
assert SimCoreFileLink # nosec
13-
assert StudyUI # nosec
1412

1513
__all__: tuple[str, ...] = (
1614
"AccessRights",
1715
"InputTypes",
1816
"Node",
1917
"OutputTypes",
2018
"SimCoreFileLink",
21-
"StudyUI",
2219
)

0 commit comments

Comments
 (0)