From 7898ab86c633262f6a279affed31bb446b2dfb2d Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Fri, 21 Jul 2023 14:53:24 +0200 Subject: [PATCH] SL: Model add basic command for SL and fix DB save artifact. --- src/Model/SedimentLayer/SedimentLayer.py | 51 +++++++++++++++++++- src/Model/SedimentLayer/SedimentLayerList.py | 4 ++ 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/src/Model/SedimentLayer/SedimentLayer.py b/src/Model/SedimentLayer/SedimentLayer.py index 47d84df5..65684bd8 100644 --- a/src/Model/SedimentLayer/SedimentLayer.py +++ b/src/Model/SedimentLayer/SedimentLayer.py @@ -180,7 +180,56 @@ class SedimentLayer(SQLSubModel): for l in self._layers: data["ind"] = ind l._sql_save(execute, data) - ind += 1 return True + + def get(self, index): + return self._layers[index] + + def set(self, index, new): + self._layers[index] = new + self._status.modified() + + def insert(self, index, new): + self._layers.insert(index, new) + self._status.modified() + + def new(self, index): + n = Layer(status = self._status) + self.insert(index, n) + self._status.modified() + return n + + def delete(self, els): + for el in els: + self._layers.remove(el) + self._status.modified() + + def delete_i(self, indexes): + els = list( + map( + lambda x: x[1], + filter( + lambda x: x[0] in indexes, + enumerate(self._layers) + ) + ) + ) + self.delete(els) + + def move_up(self, index): + if index < len(self._layers): + next = index - 1 + + l = self._layers + l[index], l[next] = l[next], l[index] + self._status.modified() + + def move_down(self, index): + if index >= 0: + prev = index + 1 + + l = self._layers + l[index], l[prev] = l[prev], l[index] + self._status.modified() diff --git a/src/Model/SedimentLayer/SedimentLayerList.py b/src/Model/SedimentLayer/SedimentLayerList.py index b360c723..32317c0b 100644 --- a/src/Model/SedimentLayer/SedimentLayerList.py +++ b/src/Model/SedimentLayer/SedimentLayerList.py @@ -37,6 +37,10 @@ class SedimentLayerList(SQLSubModel): def _sql_save(self, execute, data = None): ok = True + # Delete previous data + execute("DELETE FROM sedimentary_layer") + execute("DELETE FROM sedimentary_layer_layer") + for sl in self._sl: ok &= sl._sql_save(execute, data) -- GitLab