Adists: D90: Update for scenario.

test_sound
Pierre-Antoine 2025-08-14 15:41:59 +02:00
parent 05dcd3bcca
commit 45fddb9459
2 changed files with 98 additions and 68 deletions

View File

@ -36,8 +36,7 @@ class D90AdisTS(SQLSubModel):
]
def __init__(self, id: int = -1, name: str = "default",
status=None,
owner_scenario=-1):
status=None, owner_scenario=-1):
super(D90AdisTS, self).__init__(
id=id, status=status,
owner_scenario=owner_scenario
@ -99,59 +98,79 @@ class D90AdisTS(SQLSubModel):
@classmethod
def _db_load(cls, execute, data=None):
new = []
status = data['status']
scenario = data["scenario"]
loaded = data['loaded_pid']
table = execute(
"SELECT pamhyr_id, name, d90, enabled " +
"FROM d90_adists"
"SELECT pamhyr_id, name, d90, enabled, scenario " +
"FROM d90_adists " +
f"WHERE scenario = {scenario.id} " +
f"AND pamhyr_id NOT IN ({', '.join(map(str, loaded))}) "
)
if table is not None:
for row in table:
d90_id = row[0]
name = row[1]
d90 = row[2]
enabled = (row[3] == 1)
it = iter(row)
D90 = cls(
d90_id = next(it)
name = next(it)
value_d90 = next(it)
enabled = (next(it) == 1)
owner_scenario = next(it)
d90 = cls(
id=d90_id,
name=name,
status=data['status']
status=status,
owner_scenario=owner_scenario
)
D90.d90 = d90
D90.enabled = enabled
d90.d90 = value_d90
d90.enabled = enabled
data['d90_default_id'] = d90_id
D90._data = D90AdisTSSpec._db_load(execute, data)
d90._data = d90AdisTSSpec._db_load(execute, data)
new.append(D90)
loaded.add(pid)
new.append(d90)
data["scenario"] = scenario.parent
new += cls._db_load(execute, data)
data["scenario"] = scenario
return new
def _db_save(self, execute, data=None):
execute(f"DELETE FROM d90_adists WHERE pamhyr_id = {self.id}")
if not self.must_be_saved():
return True
execute(
f"DELETE FROM d90_adists " +
f"WHERE pamhyr_id = {self.id} " +
f"AND scenario = {self._status.scenario_id} "
)
d90 = -1.
if self.d90 is not None:
d90 = self.d90
sql = (
execute(
"INSERT INTO " +
"d90_adists(" +
"pamhyr_id, name, d90, enabled" +
"pamhyr_id, name, d90, enabled, scenario" +
") " +
"VALUES (" +
f"{self.id}, '{self._db_format(self._name)}', " +
f"{d90}, {self._enabled}" +
f"{d90}, {self._enabled}, {self._status.scenario_id}" +
")"
)
execute(sql)
data['d90_default_id'] = self.id
execute(
"DELETE FROM d90_spec " +
f"WHERE d90_default = {self.id}"
f"WHERE d90_default = {self.id} " +
f"AND scenario = {self._status.scenario_id} "
)
for d90_spec in self._data:
@ -169,7 +188,7 @@ class D90AdisTS(SQLSubModel):
@name.setter
def name(self, name):
self._name = name
self._status.modified()
self.modified()
@property
def d90(self):
@ -178,7 +197,7 @@ class D90AdisTS(SQLSubModel):
@d90.setter
def d90(self, d90):
self._d90 = d90
self._status.modified()
self.modified()
@property
def enabled(self):
@ -187,12 +206,12 @@ class D90AdisTS(SQLSubModel):
@enabled.setter
def enabled(self, enabled):
self._enabled = enabled
self._status.modified()
self.modified()
def new(self, index):
n = D90AdisTSSpec(status=self._status)
self._data.insert(index, n)
self._status.modified()
self.modified()
return n
def delete(self, data):
@ -202,13 +221,13 @@ class D90AdisTS(SQLSubModel):
self._data
)
)
self._status.modified()
self.modified()
def delete_i(self, indexes):
for ind in indexes:
del self._data[ind]
self._status.modified()
self.modified()
def insert(self, index, data):
self._data.insert(index, data)
self._status.modified()
self.modified()

View File

@ -33,15 +33,11 @@ class D90AdisTSSpec(SQLSubModel):
_id_cnt = 0
def __init__(self, id: int = -1, name: str = "",
status=None):
super(D90AdisTSSpec, self).__init__()
self._status = status
if id == -1:
self.id = D90AdisTSSpec._id_cnt
else:
self.id = id
status=None, owner_scenario=-1):
super(D90AdisTSSpec, self).__init__(
id=id, status=status,
owner_scenario=owner_scenario
)
self._name_section = name
self._reach = None
@ -50,8 +46,6 @@ class D90AdisTSSpec(SQLSubModel):
self._d90 = None
self._enabled = True
D90AdisTSSpec._id_cnt = max(D90AdisTSSpec._id_cnt + 1, self.id)
@classmethod
def _db_create(cls, execute, ext=""):
execute(f"""
@ -108,28 +102,40 @@ class D90AdisTSSpec(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 new
table = execute(
"SELECT id, d90_default, name, reach, start_rk, end_rk, " +
"d90, enabled " +
"FROM d90_spec " +
f"WHERE d90_default = {data['d90_default_id']} "
"SELECT id, name, reach, start_rk, end_rk, " +
"d90, enabled, scenario " +
"FROM d90_adists_spec " +
f"WHERE d90_default = {data['d90_default_id']} " +
f"AND scenario = {scenario.id} " +
f"AND pamhyr_id NOT IN ({', '.join(map(str, loaded))}) "
)
if table is not None:
for row in table:
id = row[0]
name = row[2]
reach = row[3]
start_rk = row[4]
end_rk = row[5]
d90 = row[6]
enabled = (row[7] == 1)
it = iter(row)
pid = next(it)
name = next(it)
reach = next(it)
start_rk = next(it)
end_rk = next(it)
d90 = next(it)
enabled = (next(it) == 1)
owner_scenario = next(it)
new_spec = cls(
id=id,
id=pid,
name=name,
status=data['status']
status=status,
owner_scenario=owner_scenario
)
new_spec.reach = reach
@ -138,29 +144,34 @@ class D90AdisTSSpec(SQLSubModel):
new_spec.d90 = d90
new_spec.enabled = enabled
loaded.add(pid)
new.append(new_spec)
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
d90_default = data['d90_default_id']
sql = (
execute(
"INSERT INTO " +
"d90_spec(id, d90_default, name, reach, " +
"start_rk, end_rk, d90, enabled) " +
"d90_spec(pamhyr_id, d90_default, name, reach, " +
"start_rk, end_rk, d90, enabled, scenario) " +
"VALUES (" +
f"{self.id}, " +
f"{d90_default}, " +
f"{self.id}, {d90_default}, " +
f"'{self._db_format(self._name_section)}', " +
f"{self._reach}, " +
f"{self._start_rk}, " +
f"{self._end_rk}, " +
f"{self._d90}, " +
f"{self._enabled}" +
f"{self._start_rk}, {self._end_rk}, " +
f"{self._d90}, {self._enabled}" +
f"{self._status.scenario_id}" +
")"
)
execute(sql)
return True
@ -171,7 +182,7 @@ class D90AdisTSSpec(SQLSubModel):
@name.setter
def name(self, name):
self._name_section = name
self._status.modified()
self.modified()
@property
def reach(self):
@ -180,7 +191,7 @@ class D90AdisTSSpec(SQLSubModel):
@reach.setter
def reach(self, reach):
self._reach = reach
self._status.modified()
self.modified()
@property
def start_rk(self):
@ -189,7 +200,7 @@ class D90AdisTSSpec(SQLSubModel):
@start_rk.setter
def start_rk(self, start_rk):
self._start_rk = start_rk
self._status.modified()
self.modified()
@property
def end_rk(self):
@ -198,7 +209,7 @@ class D90AdisTSSpec(SQLSubModel):
@end_rk.setter
def end_rk(self, end_rk):
self._end_rk = end_rk
self._status.modified()
self.modified()
@property
def d90(self):
@ -207,7 +218,7 @@ class D90AdisTSSpec(SQLSubModel):
@d90.setter
def d90(self, d90):
self._d90 = d90
self._status.modified()
self.modified()
@property
def enabled(self):
@ -216,4 +227,4 @@ class D90AdisTSSpec(SQLSubModel):
@enabled.setter
def enabled(self, enabled):
self._enabled = enabled
self._status.modified()
self.modified()