Pamhyr: Some fixe for db update to 0.1.1.

scenarios
Pierre-Antoine Rouby 2024-08-21 15:10:39 +02:00
parent 770ecdfa99
commit 7274ff5e2d
7 changed files with 47 additions and 29 deletions

View File

@ -87,6 +87,7 @@ class BasicHS(SQLSubModel):
hs = data['id2pid']['hydraulic_structures'] hs = data['id2pid']['hydraulic_structures']
cls.update_db_add_pamhyr_id(execute, table, data) cls.update_db_add_pamhyr_id(execute, table, data)
cls._db_update_to_0_1_0_set_hs_pid(execute, table, hs)
Scenario.update_db_add_scenario(execute, table) Scenario.update_db_add_scenario(execute, table)
cls._db_create(execute, ext="_tmp") cls._db_create(execute, ext="_tmp")
@ -101,8 +102,6 @@ class BasicHS(SQLSubModel):
execute(f"DROP TABLE {table}") execute(f"DROP TABLE {table}")
execute(f"ALTER TABLE {table}_tmp RENAME TO {table}") execute(f"ALTER TABLE {table}_tmp RENAME TO {table}")
cls._db_update_to_0_1_0_set_hs_pid(execute, table, hs)
@classmethod @classmethod
def _db_update_to_0_1_0_set_hs_pid(cls, execute, table, hs): def _db_update_to_0_1_0_set_hs_pid(cls, execute, table, hs):
els = execute( els = execute(

View File

@ -71,6 +71,7 @@ class BHSValue(SQLSubModel):
bhs = data['id2pid']['hydraulic_structures_basic'] bhs = data['id2pid']['hydraulic_structures_basic']
cls.update_db_add_pamhyr_id(execute, table, data) cls.update_db_add_pamhyr_id(execute, table, data)
cls._db_update_to_0_1_0_set_bhs_pid(execute, table, bhs)
Scenario.update_db_add_scenario(execute, table) Scenario.update_db_add_scenario(execute, table)
cls._db_create(execute, ext="_tmp") cls._db_create(execute, ext="_tmp")
@ -85,8 +86,6 @@ class BHSValue(SQLSubModel):
execute(f"DROP TABLE {table}") execute(f"DROP TABLE {table}")
execute(f"ALTER TABLE {table}_tmp RENAME TO {table}") execute(f"ALTER TABLE {table}_tmp RENAME TO {table}")
cls._db_update_to_0_1_0_set_bhs_pid(execute, table, bhs)
@classmethod @classmethod
def _db_update_to_0_1_0_set_bhs_pid(cls, execute, table, bhs): def _db_update_to_0_1_0_set_bhs_pid(cls, execute, table, bhs):
els = execute( els = execute(

View File

@ -113,11 +113,12 @@ class HydraulicStructure(SQLSubModel):
table = "hydraulic_structures" table = "hydraulic_structures"
reachs = data['id2pid']['river_reach'] reachs = data['id2pid']['river_reach']
cls.update_db_add_pamhyr_id(execute, table, data)
cls._db_update_to_0_1_0_set_reach_pid(execute, table, reachs)
cls._db_update_to_0_1_1( cls._db_update_to_0_1_1(
execute, data, execute, data,
origin_version="0.0.*" origin_version="0.0.*"
) )
cls.update_db_add_pamhyr_id(execute, table, data)
Scenario.update_db_add_scenario(execute, table) Scenario.update_db_add_scenario(execute, table)
cls._db_create(execute, ext="_tmp") cls._db_create(execute, ext="_tmp")
@ -135,8 +136,6 @@ class HydraulicStructure(SQLSubModel):
execute(f"DROP TABLE {table}") execute(f"DROP TABLE {table}")
execute(f"ALTER TABLE {table}_tmp RENAME TO {table}") execute(f"ALTER TABLE {table}_tmp RENAME TO {table}")
cls._db_update_to_0_1_0_set_reach_pid(execute, table, reachs)
@classmethod @classmethod
def _db_update_to_0_1_0_set_reach_pid(cls, execute, table, reachs): def _db_update_to_0_1_0_set_reach_pid(cls, execute, table, reachs):
els = execute( els = execute(

View File

@ -100,11 +100,12 @@ class Data(SQLSubModel):
table = "initial_conditions" table = "initial_conditions"
reachs = data['id2pid']['river_reach'] reachs = data['id2pid']['river_reach']
cls.update_db_add_pamhyr_id(execute, table, data)
cls._db_update_to_0_1_0_set_reach_pid(execute, table, reachs)
cls._db_update_to_0_1_1( cls._db_update_to_0_1_1(
execute, data, execute, data,
origin_version="0.0.*" origin_version="0.0.*"
) )
cls.update_db_add_pamhyr_id(execute, table, data)
Scenario.update_db_add_scenario(execute, table) Scenario.update_db_add_scenario(execute, table)
cls._db_create(execute, ext="_tmp") cls._db_create(execute, ext="_tmp")
@ -121,8 +122,6 @@ class Data(SQLSubModel):
execute(f"DROP TABLE {table}") execute(f"DROP TABLE {table}")
execute(f"ALTER TABLE {table}_tmp RENAME TO {table}") execute(f"ALTER TABLE {table}_tmp RENAME TO {table}")
cls._db_update_to_0_1_0_set_reach_pid(execute, table, reachs)
@classmethod @classmethod
def _db_update_to_0_1_1(cls, execute, data, def _db_update_to_0_1_1(cls, execute, data,
origin_version="0.1.0"): origin_version="0.1.0"):
@ -149,6 +148,7 @@ class Data(SQLSubModel):
) )
new = [] new = []
ok = True
for row in table: for row in table:
it = iter(row) it = iter(row)
@ -169,6 +169,14 @@ class Data(SQLSubModel):
None None
) )
if section is None:
logger.debug(
f"Section ID {section_id} do not exist in reach " +
f"{reach.name} ({reach.pamhyr_id})"
)
ok = False
continue
d = cls( d = cls(
id=pid, id=pid,
reach=data["reach"], reach=data["reach"],
@ -182,6 +190,12 @@ class Data(SQLSubModel):
new.append(d) new.append(d)
if not ok:
logger.info(
"Please regenerate/defined the inital conditions " +
f"for reach {reach.name} ({reach.pamhyr_id})"
)
return new return new
def _db_save(self, execute, data=None): def _db_save(self, execute, data=None):

View File

@ -59,7 +59,7 @@ class Data(SQLSubModel):
major, minor, release = version.strip().split(".") major, minor, release = version.strip().split(".")
if major == minor == "0": if major == minor == "0":
if 5 < int(release): if int(release) > 5:
cls._db_update_to_0_1_0(execute, data) cls._db_update_to_0_1_0(execute, data)
return cls._update_submodel(execute, version, data) return cls._update_submodel(execute, version, data)
@ -77,7 +77,7 @@ class Data(SQLSubModel):
cls._db_create(execute, ext="_tmp") cls._db_create(execute, ext="_tmp")
execute( execute(
f"INSERT INTO {table} " + f"INSERT INTO {table}_tmp " +
"(pamhyr_id, ind, elevation, surface, reservoir, scenario) " + "(pamhyr_id, ind, elevation, surface, reservoir, scenario) " +
"SELECT pamhyr_id, ind, elevation, surface, reservoir, scenario " + "SELECT pamhyr_id, ind, elevation, surface, reservoir, scenario " +
f"FROM {table}" f"FROM {table}"
@ -143,7 +143,7 @@ class Data(SQLSubModel):
ind = data["ind"] ind = data["ind"]
elevation = self._db_format(str(self[0])) elevation = self._db_format(str(self[0]))
surface = self._db_format(str(self[1])) surface = self._db_format(str(self[1]))
bc = data["bc"] reservoir = data["reservoir"]
execute( execute(
"INSERT INTO " + "INSERT INTO " +
@ -202,7 +202,7 @@ class Reservoir(SQLSubModel):
if int(release) < 5: if int(release) < 5:
cls._db_create(execute) cls._db_create(execute)
return True return True
else:
cls._db_update_to_0_1_0(execute, data) cls._db_update_to_0_1_0(execute, data)
return cls._update_submodel(execute, version, data) return cls._update_submodel(execute, version, data)
@ -212,15 +212,15 @@ class Reservoir(SQLSubModel):
table = "reservoir" table = "reservoir"
nodes = data['id2pid']['river_node'] nodes = data['id2pid']['river_node']
cls.update_db_add_pamhyr_id( cls.update_db_add_pamhyr_id(execute, table, data=data)
execute, table, cls._db_update_to_0_1_0_set_node_pid(execute, table, nodes)
data=data
)
Scenario.update_db_add_scenario(execute, table) Scenario.update_db_add_scenario(execute, table)
print(execute(f"SELECT * FROM {table}"))
cls._db_create(execute, ext="_tmp") cls._db_create(execute, ext="_tmp")
execute( execute(
f"INSERT INTO {table} " + f"INSERT INTO {table}_tmp " +
"(pamhyr_id, name, node, scenario) " + "(pamhyr_id, name, node, scenario) " +
"SELECT pamhyr_id, name, node, scenario " + "SELECT pamhyr_id, name, node, scenario " +
f"FROM {table}" f"FROM {table}"
@ -229,8 +229,6 @@ class Reservoir(SQLSubModel):
execute(f"DROP TABLE {table}") execute(f"DROP TABLE {table}")
execute(f"ALTER TABLE {table}_tmp RENAME TO {table}") execute(f"ALTER TABLE {table}_tmp RENAME TO {table}")
cls._db_update_to_0_1_0_set_node_pid(execute, table, nodes)
@classmethod @classmethod
def _db_load(cls, execute, data=None): def _db_load(cls, execute, data=None):
new = [] new = []
@ -290,6 +288,8 @@ class Reservoir(SQLSubModel):
) )
execute(sql) execute(sql)
data["reservoir"] = self
ind = 0 ind = 0
for d in self._data: for d in self._data:
data["ind"] = ind data["ind"] = ind
@ -387,7 +387,7 @@ class Reservoir(SQLSubModel):
def sort(self, _reverse=False, key=None): def sort(self, _reverse=False, key=None):
if key is None: if key is None:
self._data.sort(reverse=_reverse) self._data.sort(reverse=_reverse, key=lambda d: d[0])
else: else:
self._data.sort(reverse=_reverse, key=key) self._data.sort(reverse=_reverse, key=key)
self._status.modified() self._status.modified()

View File

@ -478,7 +478,10 @@ class Mage(CommandLineSolver):
IS = f"{id_sec}" IS = f"{id_sec}"
discharge = f"{d['discharge']:>10.5f}" discharge = f"{d['discharge']:>10.5f}"
elevation = f"{d['elevation']:>11.6f}" elevation = f"{d['elevation']:>11.6f}"
rk = f"{d['rk']:>9.2f}" section = d['rk']
if section is None:
continue
rk = f"{section.rk:>9.2f}"
f.write(f"{IR} {IS} {discharge} {elevation} {rk}\n") f.write(f"{IR} {IS} {discharge} {elevation} {rk}\n")
id_sec += 1 id_sec += 1

View File

@ -111,14 +111,18 @@ class InitialConditionTableModel(PamhyrTableModel):
row = index.row() row = index.row()
column = index.column() column = index.column()
if self._headers[column] is "rk": if self._headers[column] == "rk":
v = self._lst.get(row)[self._headers[column]] val = self._lst.get(row)
return v.display_name() section = val[self._headers[column]]
elif self._headers[column] is "speed": if section is None:
return ""
return section.display_name()
elif self._headers[column] == "speed":
z = self._lst.get(row)["elevation"] z = self._lst.get(row)["elevation"]
q = self._lst.get(row)["discharge"] q = self._lst.get(row)["discharge"]
profile = self._lst.get(row)["rk"] profile = self._lst.get(row)["rk"]
if len(profile) >= 1: if profile is not None:
speed = profile.speed(q, z) speed = profile.speed(q, z)
return f"{speed:.4f}" return f"{speed:.4f}"