From a2461af084dfe556092692a19204414545a492cb Mon Sep 17 00:00:00 2001 From: Dylan Jeannin Date: Tue, 26 May 2026 11:12:36 +0200 Subject: [PATCH 1/2] Scenario: avoid marking loaded scenario data as modified, that created unwanted copies in database --- src/Model/Status.py | 13 +++++++++++++ src/Model/Study.py | 18 +++++++++++------- src/Model/Tools/PamhyrDB.py | 4 ++++ 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/Model/Status.py b/src/Model/Status.py index b9eb3f2f..a0714c28 100644 --- a/src/Model/Status.py +++ b/src/Model/Status.py @@ -34,6 +34,7 @@ class StudyStatus(object): self._status = Status.EDIT self._scenario = scenario self._saved = True + self._loading = False @property def scenario_id(self): @@ -86,6 +87,15 @@ class StudyStatus(object): def is_saved(self): return self._saved + def is_loading(self): + return self._loading + + def start_loading(self): + self._loading = True + + def stop_loading(self): + self._loading = False + def save(self): logger.debug("model status set as saved") self._saved = True @@ -97,6 +107,9 @@ class StudyStatus(object): self._saved = True def modified(self): + if self._loading: + return + if self._saved: self.version += 1 diff --git a/src/Model/Study.py b/src/Model/Study.py index 250efa8f..36245160 100644 --- a/src/Model/Study.py +++ b/src/Model/Study.py @@ -572,16 +572,20 @@ class Study(SQLModel): "scenario": scenario } - # Load river data - river = River._db_load( - sql_exec, data=data - ) - data["study"] = self - river._db_load_results(sql_exec, data=data) + self.status.start_loading() + try: + # Load river data + river = River._db_load( + sql_exec, data=data + ) + data["study"] = self + river._db_load_results(sql_exec, data=data) + finally: + self.status.stop_loading() + self.status.scenario = old_scenario # FIXME: Disable scenario cache to save memory usage # self._river_scenario_cache[scenario] = river - self.status.scenario = old_scenario return river diff --git a/src/Model/Tools/PamhyrDB.py b/src/Model/Tools/PamhyrDB.py index 3ee72f0c..fba538c4 100644 --- a/src/Model/Tools/PamhyrDB.py +++ b/src/Model/Tools/PamhyrDB.py @@ -202,6 +202,8 @@ class SQLSubModel(PamhyrID): """ if self._status is None: return + if self._status.is_loading(): + return self._owner_scenario = self._status.scenario_id self._status.modified() @@ -218,6 +220,8 @@ class SQLSubModel(PamhyrID): """ if self._status is None: return + if self._status.is_loading(): + return self._owner_scenario = self._status.scenario_id self._status.modified() From b1632eaea58298eea1b62dac923a5cebc341aa71 Mon Sep 17 00:00:00 2001 From: Dylan Jeannin Date: Tue, 26 May 2026 11:14:57 +0200 Subject: [PATCH 2/2] Fix PEP8 --- src/Model/Study.py | 3 ++- src/View/Network/GraphWidget.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Model/Study.py b/src/Model/Study.py index 36245160..9816dcd4 100644 --- a/src/Model/Study.py +++ b/src/Model/Study.py @@ -546,7 +546,8 @@ class Study(SQLModel): self.status.scenario = scenario if reduce( - lambda a, s: a or (s.parent is scenario and not s.is_deleted()), + lambda a, s: a or (s.parent is scenario + and not s.is_deleted()), self.scenarios.lst, False ): diff --git a/src/View/Network/GraphWidget.py b/src/View/Network/GraphWidget.py index 5c41ee9d..160c1f45 100644 --- a/src/View/Network/GraphWidget.py +++ b/src/View/Network/GraphWidget.py @@ -965,7 +965,7 @@ class GraphWidget(QGraphicsView): if self.selected_new_edge_src_node() is None: self.set_selected_new_edge_src_node(nodes[0]) else: - self.add_edge(self.selected_new_edge_src_node(), + self.add_edge(self.selected_new_edge_src_node(), nodes[0]) # Delete nodes and edges