HS: Add to scenarios.

This commit is contained in:
Pierre-Antoine Rouby committed 2024-08-28 16:04:19 +02:00
1 parent 9ec21d815d
commit 60ee889794
10 files changed
+296 -165

No files matched your search

@@ -35,13 +35,13 @@ class BasicHS(SQLSubModel):
_sub_classes = [
BHSValue,
]
_id_cnt = 0
def __init__(self, id: int = -1, name: str = "",
status=None):
super(BasicHS, self).__init__(id)
self._status = status
status=None, owner_scenario=-1):
super(BasicHS, self).__init__(
id=id, status=status,
owner_scenario=owner_scenario
)
self._name = name
self._type = ""
@@ -53,6 +53,7 @@ class BasicHS(SQLSubModel):
execute(f"""
CREATE TABLE hydraulic_structures_basic{ext} (
{cls.create_db_add_pamhyr_id()},
deleted BOOLEAN NOT NULL DEFAULT FALSE,
name TEXT NOT NULL,
type TEXT NOT NULL,
enabled BOOLEAN NOT NULL,
@@ -79,6 +80,13 @@ class BasicHS(SQLSubModel):
else:
cls._db_update_to_0_1_0(execute, data)
if major == "0" and minor == "1":
if release < 2:
execute(
"ALTER TABLE hydraulic_structures_basic " +
"ADD COLUMN deleted BOOLEAN NOT NULL DEFAULT FALSE"
)
return cls._update_submodel(execute, version, data)
@classmethod
@@ -135,28 +143,39 @@ class BasicHS(SQLSubModel):
@classmethod
def _db_load(cls, execute, data=None):
new = []
status = data["status"]
scenario = data["scenario"]
loaded = data['loaded_pid']
if scenario is None:
return []
table = execute(
"SELECT pamhyr_id, name, type, enabled, hs " +
"SELECT pamhyr_id, deleted, name, type, enabled, hs, scenario " +
"FROM hydraulic_structures_basic " +
f"WHERE hs = {data['hs_id']} "
f"WHERE hs = {data['hs_id']} " +
f"AND scenario = {scenario.id} " +
f"AND pamhyr_id NOT IN ({', '.join(map(str, loaded))})"
)
for row in table:
it = iter(row)
bhs_pid = next(it)
deleted = (next(it) == 1)
name = next(it)
type = next(it)
enabled = (next(it) == 1)
hs_id = next(it)
owner_scenario = next(it)
ctor = cls._get_ctor_from_type(type)
bhs = ctor(
id=bhs_pid,
name=name,
status=data['status']
id=bhs_pid, name=name,
status=status, owner_scenario=owner_scenario
)
if deleted:
bhs.set_as_deleted()
bhs.enabled = enabled
@@ -164,31 +183,45 @@ class BasicHS(SQLSubModel):
bhs._data = BHSValue._db_load(
execute, data
)
print(f"{bhs_pid} : {deleted}")
if deleted:
bhs.set_as_deleted()
new.append(bhs)
loaded.add(bhs_pid)
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
hs_id = data['hs_id']
sql = (
execute(
"INSERT INTO " +
"hydraulic_structures_basic(pamhyr_id, name, type, enabled, hs) " +
"hydraulic_structures_basic(pamhyr_id, deleted, " +
"name, type, enabled, hs, scenario) " +
"VALUES (" +
f"{self.pamhyr_id}, " +
f"{self._db_format(self.is_deleted())}, " +
f"'{self._db_format(self._name)}', " +
f"'{self._db_format(self._type)}', " +
f"{self._db_format(self.enabled)}, " +
f"{hs_id} " +
f"{hs_id}, " +
f"{self._status.scenario_id}"
")"
)
execute(sql)
data['bhs_id'] = self.pamhyr_id
execute(
"DELETE FROM hydraulic_structures_basic_value " +
f"WHERE bhs = {self.pamhyr_id}"
f"WHERE bhs = {self.pamhyr_id} " +
f"AND scenario = {self._status.scenario_id}"
)
for values in self._data:
@@ -209,7 +242,7 @@ class BasicHS(SQLSubModel):
@name.setter
def name(self, name):
self._name = name
self._status.modified()
self.modified()
@property
def type(self):
@@ -218,7 +251,7 @@ class BasicHS(SQLSubModel):
@type.setter
def type(self, type):
self._type = type
self._status.modified()
self.modified()
@property
def enabled(self):
@@ -227,7 +260,7 @@ class BasicHS(SQLSubModel):
@enabled.setter
def enabled(self, enabled):
self._enabled = enabled
self._status.modified()
self.modified()
@property
def parameters(self):