diff --git a/src/Model/Friction/FrictionList.py b/src/Model/Friction/FrictionList.py index 6f585fcc262464ec3cf6c4c892833f79c2332c79..20c3319764400f516972ad33f4349ebb578b1040 100644 --- a/src/Model/Friction/FrictionList.py +++ b/src/Model/Friction/FrictionList.py @@ -57,12 +57,14 @@ class FrictionList(PamhyrModelList): return new def _db_save(self, execute, data=None): + frictions = self.lst + reach = data["reach"] execute(f"DELETE FROM friction WHERE reach = {reach.id}") ok = True ind = 0 - for friction in self._lst: + for friction in frictions: data["ind"] = ind ok &= friction._db_save(execute, data=data) ind += 1 diff --git a/src/Model/Geometry/ProfileXYZ.py b/src/Model/Geometry/ProfileXYZ.py index f19100bced956048e204ebebaee646c3f8524f2e..4375d18cba7a600bf1e3ad1262cd69cad3a2403b 100644 --- a/src/Model/Geometry/ProfileXYZ.py +++ b/src/Model/Geometry/ProfileXYZ.py @@ -173,11 +173,13 @@ class ProfileXYZ(Profile, SQLSubModel): ) execute(sql) + points = self.points + data["profile"] = self execute(f"DELETE FROM geometry_pointXYZ WHERE profile = {self.id}") ind = 0 - for point in self.points: + for point in points: data["ind"] = ind ok &= point._db_save(execute, data) ind += 1 diff --git a/src/Model/Geometry/Reach.py b/src/Model/Geometry/Reach.py index b6a5952dfcebe77ee60c436e4b4bad9dde8957ae..c3ee413cd6430e3649f12f3a372b1252e0571412 100644 --- a/src/Model/Geometry/Reach.py +++ b/src/Model/Geometry/Reach.py @@ -71,15 +71,16 @@ class Reach(SQLSubModel): return new def _db_save(self, execute, data=None): + profiles = self.profiles + # Delete old data execute(f"DELETE FROM geometry_profileXYZ WHERE reach = {self.id}") - # execute(f"DELETE FROM geometry_pointXYZ") if data is None: data = {} ind = 0 - for profile in self.profiles: + for profile in profiles: data["ind"] = ind profile._db_save(execute, data) ind += 1 diff --git a/src/Model/InitialConditions/InitialConditionsDict.py b/src/Model/InitialConditions/InitialConditionsDict.py index 86655e369672d5b6c1526e6512cc4dff5a545bde..0cc752939a8d677f0a8599d30f6d6464b397953e 100644 --- a/src/Model/InitialConditions/InitialConditionsDict.py +++ b/src/Model/InitialConditions/InitialConditionsDict.py @@ -55,14 +55,18 @@ class InitialConditionsDict(PamhyrModelDict): if data is None: data = {} - execute("DELETE FROM initial_conditions") - - for reach in self._dict: + ics = self._dict + for reach in ics: data["reach"] = reach v = self._dict[reach] if isinstance(v, types.GeneratorType): self._dict[reach] = list(v)[0] + execute( + "DELETE FROM initial_conditions " + + f"WHERE reach = '{reach.id}'" + ) + ok &= self._dict[reach]._db_save(execute, data) return ok