Skip to content

Commit 7b2639c

Browse files
fix: validate workbench against nodes
1 parent 087ec30 commit 7b2639c

File tree

2 files changed

+21
-6
lines changed

2 files changed

+21
-6
lines changed

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

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -305,9 +305,28 @@ async def insert_project(
305305
# extract workbench nodes
306306
workbench: dict[str, Any] = insert_values.pop("workbench", {})
307307
project_nodes = project_nodes or {}
308+
309+
# Get valid ProjectNodeCreate fields, excluding node_id since it's set separately
310+
valid_fields = ProjectNodeCreate.get_field_names(exclude={"node_id"})
311+
312+
# Mapping from camelCase (workbench) to snake_case (ProjectNodeCreate)
313+
field_mapping = {
314+
"inputAccess": "input_access",
315+
"inputNodes": "input_nodes",
316+
"inputsUnits": "inputs_units",
317+
"outputNodes": "output_nodes",
318+
"runHash": "run_hash",
319+
"bootOptions": "boot_options",
320+
}
321+
308322
project_nodes |= {
309323
NodeID(node_id): ProjectNodeCreate(
310-
node_id=NodeID(node_id), **project_workbench_node
324+
node_id=NodeID(node_id),
325+
**{
326+
str(field_mapping.get(field, field)): value
327+
for field, value in project_workbench_node.items()
328+
if field_mapping.get(field, field) in valid_fields
329+
},
311330
)
312331
for node_id, project_workbench_node in workbench.items()
313332
}
@@ -320,10 +339,7 @@ async def insert_project(
320339
project_nodes=project_nodes,
321340
)
322341

323-
inserted_project["workbench"] = {
324-
f"{node_id}": project_node.model_dump_as_node()
325-
for node_id, project_node in project_nodes.items()
326-
}
342+
inserted_project["workbench"] = workbench
327343

328344
async with self.engine.acquire() as conn:
329345
# Returns created project with names as in the project schema

services/web/server/tests/unit/with_dbs/03/test_project_db.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,6 @@ def _assert_project_db_row(
168168
"description": project["description"],
169169
"thumbnail": project["thumbnail"],
170170
"prj_owner": None,
171-
"workbench": project["workbench"],
172171
"published": False,
173172
"dev": project["dev"],
174173
"classifiers": project["classifiers"],

0 commit comments

Comments
 (0)