Commit 4790b9c0 authored by Pierre-Antoine Rouby's avatar Pierre-Antoine Rouby
Browse files

River: Fix node and edges artefact deletions at data saves.

Showing with 29 additions and 1 deletion
+29 -1
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from tools import flatten from tools import flatten, logger_exception
from Model.Tools.PamhyrDB import SQLSubModel from Model.Tools.PamhyrDB import SQLSubModel
...@@ -326,6 +326,8 @@ class River(Graph, SQLSubModel): ...@@ -326,6 +326,8 @@ class River(Graph, SQLSubModel):
return new return new
def _db_save(self, execute, data=None): def _db_save(self, execute, data=None):
self._db_save_delete_artefact(execute, data)
objs = (self._nodes + self._edges) objs = (self._nodes + self._edges)
objs.append(self._boundary_condition) objs.append(self._boundary_condition)
objs.append(self._initial_conditions) objs.append(self._initial_conditions)
...@@ -341,6 +343,32 @@ class River(Graph, SQLSubModel): ...@@ -341,6 +343,32 @@ class River(Graph, SQLSubModel):
self._save_submodel(execute, objs, data) self._save_submodel(execute, objs, data)
return True return True
def _db_save_delete_artefact(self, execute, data=None):
self._db_save_delete_artefact_where_not_id(
execute, data,
"river_node", self._nodes
)
self._db_save_delete_artefact_where_not_id(
execute, data,
"river_reach", self._edges
)
def _db_save_delete_artefact_where_not_id(self, execute, data,
table:str, els:list):
try:
execute(
f"DELETE FROM {table} " +
"WHERE " +
" OR ".join(
map(
lambda n: f"( id <> {n.id} )", els
)
)
)
except Exception as e:
logger_exception(e)
@property @property
def boundary_condition(self): def boundary_condition(self):
return self._boundary_condition return self._boundary_condition
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment