From cc5d86328bb24ff0930cb3cb37725c5d11dfecfc Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby Date: Thu, 28 Aug 2025 10:43:20 +0200 Subject: [PATCH] Reach: Fix deleted profile loading and manipulation. --- src/Model/Geometry/Reach.py | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/src/Model/Geometry/Reach.py b/src/Model/Geometry/Reach.py index 119868cc..fd098c31 100644 --- a/src/Model/Geometry/Reach.py +++ b/src/Model/Geometry/Reach.py @@ -83,6 +83,11 @@ class Reach(SQLSubModel): return new def _db_save(self, execute, data=None): + if not self.must_be_saved(): + return True + + ok = True + execute( "DELETE FROM geometry_profileXYZ " + f"WHERE reach = {self.pamhyr_id} " + @@ -92,10 +97,10 @@ class Reach(SQLSubModel): ind = 0 for profile in self._profiles: data["ind"] = ind - profile._db_save(execute, data) + ok &= profile._db_save(execute, data) ind += 1 - return True + return ok def profile(self, i): """Returns profile at index i @@ -169,7 +174,7 @@ class Reach(SQLSubModel): """ profile = ProfileXYZ(reach=self, status=self._status) - self.profiles.insert(index, profile) + self._profiles.insert(index, profile) self.modified() @@ -187,7 +192,7 @@ class Reach(SQLSubModel): if profile in self._profiles: self.undelete([profile]) else: - self.profiles.insert(index, profile) + self._profiles.insert(index, profile) self.modified() @@ -205,7 +210,7 @@ class Reach(SQLSubModel): lambda p: p[1].set_as_deleted(), filter( lambda e: e[0] in indexes, - enumerate(self.profiles) + enumerate(self._profiles) ) ) ) @@ -237,13 +242,14 @@ class Reach(SQLSubModel): def purge(self): for el in self._profiles: el.set_as_deleted() + self.modified() def move_up_profile(self, index: int): if index < len(self.profiles): next = index - 1 - p = self.profiles + p = self._profiles p[index], p[next] = p[next], p[index] self.modified() @@ -251,7 +257,7 @@ class Reach(SQLSubModel): if index >= 0: prev = index + 1 - p = self.profiles + p = self._profiles p[index], p[prev] = p[prev], p[index] self.modified() @@ -522,8 +528,8 @@ class Reach(SQLSubModel): @timer def sort(self, is_reversed: bool = False): - self.profiles = sorted( - self.profiles, + self._profiles = sorted( + self._profiles, key=lambda profile: profile.rk, reverse=is_reversed ) @@ -534,11 +540,11 @@ class Reach(SQLSubModel): if len(self.profiles) != len(indexes): logger.critical("Indexes list do not correspond to profile list") - self.profiles = list( + self._profiles = list( map( lambda x: x[1], sorted( - enumerate(self.profiles), + enumerate(self._profiles), key=lambda x: indexes[x[0]] ) ) @@ -599,7 +605,7 @@ class Reach(SQLSubModel): profiles.append(prof) - self.profiles = profiles + self.profiles + self._profiles = profiles + self._profiles self._recompute_rk() return profiles @@ -647,7 +653,7 @@ class Reach(SQLSubModel): logger.error(e) e.alert() finally: - self.profiles = imported_profiles + self.profiles + self._profiles = self._profiles + imported_profiles return imported_profiles