diff --git a/src/Meshing/Internal.py b/src/Meshing/Internal.py index 48a84a94..5ad20509 100644 --- a/src/Meshing/Internal.py +++ b/src/Meshing/Internal.py @@ -141,6 +141,7 @@ class InternalMeshing(AMeshingTool): dj*(profiles[i+1].rk - profiles[i].rk) p.name = f'interpol{p.rk}' + p.interpolated = True new_profiles2.append(p) new_profiles.append(new_profiles2) diff --git a/src/Model/Geometry/ProfileXYZ.py b/src/Model/Geometry/ProfileXYZ.py index dc6b0c87..303e4b6d 100644 --- a/src/Model/Geometry/ProfileXYZ.py +++ b/src/Model/Geometry/ProfileXYZ.py @@ -59,7 +59,7 @@ class ProfileXYZ(Profile, SQLSubModel): nb_point: int = 0, code1: int = 0, code2: int = 0, status=None, owner_scenario=-1, - enabled=True): + enabled=True, interpolated=False): """ProfileXYZ constructor Args: @@ -92,6 +92,7 @@ class ProfileXYZ(Profile, SQLSubModel): self._station = [] self.station_up_to_date = False self._enabled = bool(enabled) + self._interpolated = bool(interpolated) self._get_water_limits_cache = {} self._get_water_limits_ac_cache = {} @@ -111,6 +112,7 @@ class ProfileXYZ(Profile, SQLSubModel): code2 INTEGER NOT NULL, sl INTEGER, enabled BOOLEAN NOT NULL DEFAULT TRUE, + interpolated BOOLEAN NOT NULL DEFAULT FALSE, {Scenario.create_db_add_scenario()}, {Scenario.create_db_add_scenario_fk()}, FOREIGN KEY(reach) REFERENCES river_reach(pamhyr_id), @@ -162,6 +164,20 @@ class ProfileXYZ(Profile, SQLSubModel): "ADD COLUMN enabled BOOLEAN NOT NULL DEFAULT TRUE" ) + if major == "0" and (int(minor) < 2 or + (minor == "2" and int(release) < 10)): + if minor != "0": + execute( + "ALTER TABLE geometry_profileXYZ " + + "ADD COLUMN interpolated BOOLEAN NOT NULL DEFAULT FALSE" + ) + execute( + "UPDATE geometry_profileXYZ " + + "SET interpolated = CASE " + + "WHEN LOWER(name) LIKE 'interpol%' THEN TRUE " + + "ELSE FALSE END" + ) + return cls._update_submodel(execute, version, data) @classmethod @@ -247,7 +263,7 @@ class ProfileXYZ(Profile, SQLSubModel): table = execute( "SELECT pamhyr_id, ind, deleted, name, rk, num, " + - "code1, code2, sl, scenario, enabled " + + "code1, code2, sl, scenario, enabled, interpolated " + "FROM geometry_profileXYZ " + f"WHERE reach = {reach.id} " + f"AND scenario = {scenario.id} " + @@ -269,6 +285,7 @@ class ProfileXYZ(Profile, SQLSubModel): sl = next(it) owner_scenario = next(it) enabled = (next(it) == 1) + interpolated = (next(it) == 1) profile = cls( id=pid, ind=ind, num=num, @@ -277,7 +294,8 @@ class ProfileXYZ(Profile, SQLSubModel): reach=reach, status=status, owner_scenario=owner_scenario, - enabled=enabled + enabled=enabled, + interpolated=interpolated ) if deleted: profile.set_as_deleted() @@ -330,13 +348,14 @@ class ProfileXYZ(Profile, SQLSubModel): execute( "INSERT OR REPLACE INTO " + "geometry_profileXYZ(pamhyr_id, deleted, ind, name, reach, " + - "rk, num, code1, code2, sl, scenario, enabled) " + + "rk, num, code1, code2, sl, scenario, enabled, interpolated) " + "VALUES (" + f"{self.pamhyr_id}, {self._db_format(self.is_deleted())}, " + f"{ind}, '{self._db_format(self._name)}', " + f"{self.reach.pamhyr_id}, {self.rk}, {self.num}, " + f"{self.code1}, {self.code1}, {sl}, {self._status.scenario_id}, " + - f"{self._db_format(self._enabled)}" + + f"{self._db_format(self._enabled)}, " + + f"{self._db_format(self._interpolated)}" + ")" ) @@ -404,7 +423,8 @@ class ProfileXYZ(Profile, SQLSubModel): rk=self.rk, reach=self.reach, status=self._status, - enabled=self.is_enabled + enabled=self.is_enabled, + interpolated=self.interpolated ) if self.is_deleted(): new_p.set_as_deleted() @@ -425,7 +445,8 @@ class ProfileXYZ(Profile, SQLSubModel): rk=self.rk, reach=new_reach, status=self._status, - enabled=self.is_enabled + enabled=self.is_enabled, + interpolated=self.interpolated ) if self.is_deleted(): new_p.set_as_deleted() @@ -1147,7 +1168,8 @@ class ProfileXYZ(Profile, SQLSubModel): rk=self.rk, reach=self.reach, status=self._status, - enabled=self.is_enabled) + enabled=self.is_enabled, + interpolated=self.interpolated) for i, k in enumerate(self.points): p.insert_point(i, k.copy()) @@ -1194,3 +1216,12 @@ class ProfileXYZ(Profile, SQLSubModel): def enabled(self, value): self._enabled = bool(value) self.modified() + + @property + def interpolated(self): + return self._interpolated + + @interpolated.setter + def interpolated(self, value): + self._interpolated = bool(value) + self.modified()