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

View File

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