diff --git a/packages/models-library/src/models_library/projects.py b/packages/models-library/src/models_library/projects.py index 401b0ecb79d1..fd5e58849aa6 100644 --- a/packages/models-library/src/models_library/projects.py +++ b/packages/models-library/src/models_library/projects.py @@ -144,17 +144,17 @@ class Project(BaseProjectModel): ] # Lifecycle - creation_date: Annotated[ + creation_date: Annotated[ # type: ignore[assignment] DateTimeStr, - Field( # type: ignore[assignment] + Field( description="project creation date", examples=["2018-07-01T11:13:43Z"], alias="creationDate", ), ] - last_change_date: Annotated[ + last_change_date: Annotated[ # type: ignore[assignment] DateTimeStr, - Field( # type: ignore[assignment] + Field( description="last save date", examples=["2018-07-01T11:13:43Z"], alias="lastChangeDate", @@ -214,4 +214,5 @@ class Project(BaseProjectModel): model_config = ConfigDict( # NOTE: this is a security measure until we get rid of the ProjectDict variants extra="forbid", + populate_by_name=True, ) diff --git a/services/web/server/src/simcore_service_webserver/studies_dispatcher/_projects.py b/services/web/server/src/simcore_service_webserver/studies_dispatcher/_projects.py index 56c004cdccbf..9067cd58a7af 100644 --- a/services/web/server/src/simcore_service_webserver/studies_dispatcher/_projects.py +++ b/services/web/server/src/simcore_service_webserver/studies_dispatcher/_projects.py @@ -12,7 +12,8 @@ from typing import NamedTuple from aiohttp import web -from models_library.projects import DateTimeStr, Project, ProjectID, StudyUIDict +from models_library.api_schemas_webserver.projects_ui import StudyUI +from models_library.projects import DateTimeStr, Project, ProjectID from models_library.projects_access import AccessRights, GroupIDStr from models_library.projects_nodes import Node from models_library.projects_nodes_io import DownloadLink, NodeID, PortLink @@ -96,12 +97,16 @@ def _create_project( name=name, description=description, thumbnail=thumbnail, - prjOwner=owner.email, - accessRights={GroupIDStr(owner.primary_gid): access_rights}, - creationDate=DateTimeStr(now_str()), - lastChangeDate=DateTimeStr(now_str()), + prj_owner=owner.email, + access_rights={GroupIDStr(owner.primary_gid): access_rights}, + creation_date=DateTimeStr(now_str()), + last_change_date=DateTimeStr(now_str()), workbench=workbench, - ui=StudyUIDict(workbench=workbench_ui), # type: ignore[arg-type] + ui=StudyUI.model_validate( + { + "workbench": workbench_ui, + } + ).model_dump(mode="json", exclude_unset=True), )