From f13ab03192f741e4fc89a0cc0e8e6f5570f51847 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby Date: Mon, 18 Aug 2025 14:47:31 +0200 Subject: [PATCH] Adists: BC, IC, LC: Fix pollutant pamhyr_id update. --- .../BoundaryConditionAdisTS.py | 23 +++++++++++++++++ .../InitialConditionsAdisTS.py | 25 ++++++++++++++++++- .../LateralContributionAdisTS.py | 23 +++++++++++++++++ 3 files changed, 70 insertions(+), 1 deletion(-) diff --git a/src/Model/BoundaryConditionsAdisTS/BoundaryConditionAdisTS.py b/src/Model/BoundaryConditionsAdisTS/BoundaryConditionAdisTS.py index 8497c4e1..31a36769 100644 --- a/src/Model/BoundaryConditionsAdisTS/BoundaryConditionAdisTS.py +++ b/src/Model/BoundaryConditionsAdisTS/BoundaryConditionAdisTS.py @@ -126,6 +126,29 @@ class BoundaryConditionAdisTS(SQLSubModel): execute(f"ALTER TABLE {table}_tmp RENAME TO {table}") cls._db_update_to_0_2_0_set_node_pid(execute, table, nodes) + cls._db_update_to_0_2_0_set_pollutants_pid(execute, data) + + @classmethod + def _db_update_to_0_2_0_set_pollutants_pid(cls, execute, data): + pid_pol = data["id2pid"]["Pollutants"] + els = execute( + f"SELECT pamhyr_id, pollutant " + + "FROM boundary_condition_adists" + ) + + for row in els: + it = iter(row) + pid = next(it) + pol_id = next(it) + + if pol_id == -1: + continue + + execute( + f"UPDATE boundary_condition_adists " + + f"SET pollutant = {pid_pol[pol_id]} " + + f"WHERE pamhyr_id = {pid}" + ) @classmethod def _db_update_to_0_2_0_data(cls, execute, data): diff --git a/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTS.py b/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTS.py index e3f7c843..ea30fa42 100644 --- a/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTS.py +++ b/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTS.py @@ -94,7 +94,6 @@ class InitialConditionsAdisTS(SQLSubModel): @classmethod def _db_update_to_0_2_0(cls, execute, data): table = "initial_conditions_adists" - reachs = data['id2pid']['river_reach'] cls.update_db_add_pamhyr_id(execute, table, data) Scenario.update_db_add_scenario(execute, table) @@ -113,6 +112,30 @@ class InitialConditionsAdisTS(SQLSubModel): execute(f"DROP TABLE {table}") execute(f"ALTER TABLE {table}_tmp RENAME TO {table}") + cls._db_update_to_0_2_0_set_pollutants_pid(execute, data) + + @classmethod + def _db_update_to_0_2_0_set_pollutants_pid(cls, execute, data): + pid_pol = data["id2pid"]["Pollutants"] + els = execute( + f"SELECT pamhyr_id, pollutant " + + "FROM initial_conditions_adists" + ) + + for row in els: + it = iter(row) + pid = next(it) + pol_id = next(it) + + if pol_id == -1: + continue + + execute( + f"UPDATE initial_conditions_adists " + + f"SET pollutant = {pid_pol[pol_id]} " + + f"WHERE pamhyr_id = {pid}" + ) + @classmethod def _db_load(cls, execute, data=None): new = [] diff --git a/src/Model/LateralContributionsAdisTS/LateralContributionAdisTS.py b/src/Model/LateralContributionsAdisTS/LateralContributionAdisTS.py index 27c6456b..97267ca1 100644 --- a/src/Model/LateralContributionsAdisTS/LateralContributionAdisTS.py +++ b/src/Model/LateralContributionsAdisTS/LateralContributionAdisTS.py @@ -127,6 +127,29 @@ class LateralContributionAdisTS(SQLSubModel): execute(f"ALTER TABLE {table}_tmp RENAME TO {table}") cls._db_update_to_0_2_0_set_reach_pid(execute, table, reachs) + cls._db_update_to_0_2_0_set_pollutants_pid(execute, data) + + @classmethod + def _db_update_to_0_2_0_set_pollutants_pid(cls, execute, data): + pid_pol = data["id2pid"]["Pollutants"] + els = execute( + f"SELECT pamhyr_id, pollutant " + + "FROM lateral_contribution_adists" + ) + + for row in els: + it = iter(row) + pid = next(it) + pol_id = next(it) + + if pol_id == -1: + continue + + execute( + f"UPDATE lateral_contribution_adists " + + f"SET pollutant = {pid_pol[pol_id]} " + + f"WHERE pamhyr_id = {pid}" + ) @classmethod def _db_update_to_0_2_0_data(cls, execute, data):