Skip to content

Commit ee01c01

Browse files
fix: node outputs
1 parent 6c0431f commit ee01c01

File tree

2 files changed

+23
-22
lines changed

2 files changed

+23
-22
lines changed

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,15 +179,17 @@ async def update(
179179
project_id: ProjectID,
180180
node_id: NodeID,
181181
partial_node: PartialNode,
182-
) -> None:
182+
) -> Node:
183183
values = partial_node.model_dump(mode="json", exclude_unset=True)
184184

185185
async with transaction_context(get_asyncpg_engine(app), connection) as conn:
186-
await conn.stream(
186+
result = await conn.stream(
187187
projects_nodes.update()
188188
.values(**values)
189189
.where(
190190
(projects_nodes.c.project_uuid == f"{project_id}")
191191
& (projects_nodes.c.node_id == f"{node_id}")
192192
)
193+
.returning(*_SELECTION_PROJECTS_NODES_DB_ARGS)
193194
)
195+
return Node.model_validate(await result.first(), from_attributes=True)

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

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1329,16 +1329,7 @@ async def update_project_node_outputs(
13291329
permission="write", # NOTE: MD: before only read was sufficient, double check this
13301330
)
13311331

1332-
updated_project, changed_entries = await db_legacy.update_project_node_data(
1333-
user_id=user_id,
1334-
project_uuid=project_id,
1335-
node_id=node_id,
1336-
product_name=None,
1337-
new_node_data={"outputs": new_outputs, "runHash": new_run_hash},
1338-
client_session_id=client_session_id,
1339-
)
1340-
1341-
await _projects_nodes_repository.update(
1332+
updated_node = await _projects_nodes_repository.update(
13421333
app,
13431334
project_id=project_id,
13441335
node_id=node_id,
@@ -1347,23 +1338,31 @@ async def update_project_node_outputs(
13471338
),
13481339
)
13491340

1341+
await _create_project_document_and_notify(
1342+
app,
1343+
project_id=project_id,
1344+
user_id=user_id,
1345+
client_session_id=client_session_id,
1346+
)
1347+
13501348
_logger.debug(
13511349
"patched project %s, following entries changed: %s",
13521350
project_id,
1353-
pformat(changed_entries),
1351+
pformat(updated_node),
13541352
)
1355-
updated_project = await add_project_states_for_user(
1356-
user_id=user_id, project=updated_project, is_template=False, app=app
1353+
1354+
updated_project = await _projects_repository.get_project_with_workbench(
1355+
app, project_uuid=project_id
13571356
)
13581357

1359-
# changed entries come in the form of {node_uuid: {outputs: {changed_key1: value1, changed_key2: value2}}}
1360-
# we do want only the key names
1361-
changed_keys = (
1362-
changed_entries.get(TypeAdapter(NodeIDStr).validate_python(f"{node_id}"), {})
1363-
.get("outputs", {})
1364-
.keys()
1358+
updated_project_with_states = await add_project_states_for_user(
1359+
user_id=user_id,
1360+
project=updated_project.model_dump(mode="json"),
1361+
is_template=False,
1362+
app=app,
13651363
)
1366-
return updated_project, changed_keys
1364+
1365+
return updated_project_with_states, list(new_outputs.keys())
13671366

13681367

13691368
async def list_node_ids_in_project(

0 commit comments

Comments
 (0)