mirror of https://gitlab.com/pamhyr/pamhyr2
River: Fix node and edges artefact deletions at data saves.
parent
770bb5f96f
commit
4790b9c071
|
|
@ -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):
|
||||||
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):
|
||||||
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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue