From 468405d4eacf086ec05d8cd8d438f23a018b76cb Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby Date: Thu, 14 Aug 2025 16:32:22 +0200 Subject: [PATCH] Adists: Fix missing and update outputrk for scenario. --- .../BoundaryConditionAdisTS.py | 3 ++ src/Model/D90AdisTS/D90AdisTS.py | 3 ++ src/Model/DIFAdisTS/DIFAdisTS.py | 3 ++ src/Model/OutputRKAdists/OutputRKAdists.py | 47 +++++++++++++------ 4 files changed, 41 insertions(+), 15 deletions(-) diff --git a/src/Model/BoundaryConditionsAdisTS/BoundaryConditionAdisTS.py b/src/Model/BoundaryConditionsAdisTS/BoundaryConditionAdisTS.py index d4eb90c5..b8d7ee54 100644 --- a/src/Model/BoundaryConditionsAdisTS/BoundaryConditionAdisTS.py +++ b/src/Model/BoundaryConditionsAdisTS/BoundaryConditionAdisTS.py @@ -152,6 +152,9 @@ class BoundaryConditionAdisTS(SQLSubModel): scenario = data["scenario"] loaded = data['loaded_pid'] + if scenario is None: + return new + table = execute( "SELECT pamhyr_id, pollutant, type, node, scenario " + "FROM boundary_condition_adists " + diff --git a/src/Model/D90AdisTS/D90AdisTS.py b/src/Model/D90AdisTS/D90AdisTS.py index 670c649a..20f78040 100644 --- a/src/Model/D90AdisTS/D90AdisTS.py +++ b/src/Model/D90AdisTS/D90AdisTS.py @@ -102,6 +102,9 @@ class D90AdisTS(SQLSubModel): scenario = data["scenario"] loaded = data['loaded_pid'] + if scenario is None: + return new + table = execute( "SELECT pamhyr_id, name, d90, enabled, scenario " + "FROM d90_adists " + diff --git a/src/Model/DIFAdisTS/DIFAdisTS.py b/src/Model/DIFAdisTS/DIFAdisTS.py index 86482e09..097dc9a3 100644 --- a/src/Model/DIFAdisTS/DIFAdisTS.py +++ b/src/Model/DIFAdisTS/DIFAdisTS.py @@ -109,6 +109,9 @@ class DIFAdisTS(SQLSubModel): scenario = data["scenario"] loaded = data['loaded_pid'] + if scenario is None: + return new + table = execute( "SELECT pamhyr_id, name, method, dif, b, c, enabled, scenario " + "FROM dif_adists " + diff --git a/src/Model/OutputRKAdists/OutputRKAdists.py b/src/Model/OutputRKAdists/OutputRKAdists.py index 71148f83..09557adf 100644 --- a/src/Model/OutputRKAdists/OutputRKAdists.py +++ b/src/Model/OutputRKAdists/OutputRKAdists.py @@ -43,8 +43,6 @@ class OutputRKAdists(SQLSubModel): owner_scenario=owner_scenario ) - self._status = status - self._reach = reach self._rk = rk self._title = str(title) @@ -131,48 +129,67 @@ class OutputRKAdists(SQLSubModel): @classmethod def _db_load(cls, execute, data=None): new = [] + status = data['status'] + scenario = data["scenario"] + loaded = data['loaded_pid'] # reach = data["reach"] # profile = data["profile"] - status = data["status"] + + if scenario is None: + return new table = execute( - "SELECT pamhyr_id, reach, rk, title " + + "SELECT pamhyr_id, reach, rk, title, scenario " + f"FROM OutputRKAdists" ) if table is not None: for row in table: - id = row[0] - id_reach = row[1] - id_rk = row[2] - title = row[3] + it = iter(row) + + pid = next(it) + id_reach = next(it) + id_rk = next(it) + title = next(it) + owner_scenario = next(it) new_output = cls( - id=id, reach=id_reach, + id=pid, reach=id_reach, rk=id_rk, title=title, - status=status + status=status, + owner_scenario=owner_scenario, ) + loaded.add(pid) new.append(new_output) + data["scenario"] = scenario.parent + new += cls._db_load(execute, data) + data["scenario"] = scenario + return new def _db_save(self, execute, data=None): + if not self.must_be_saved(): + return True - execute(f"DELETE FROM OutputRKAdists WHERE id = {self.id}") + execute( + "DELETE FROM OutputRKAdists " + + f"WHERE pamhyr_id = {self.id} " + + f"AND scenario = {self._status.scenario_id} " + ) - sql = ( + execute( "INSERT INTO " + - "OutputRKAdists(pamhyr_id, reach, rk, title) " + + "OutputRKAdists(pamhyr_id, reach, rk, title, scenario) " + "VALUES (" + f"{self.id}, {self._reach}, {self._rk}, " + f"'{self._db_format(self._title)}'" + + f"{self._status.scenario_id}" + ")" ) - execute(sql) - return True @property