Adists: d90, dif, BC: Add deleted tag in DB.

scenarios
Pierre-Antoine 2025-08-19 11:34:51 +02:00
parent 8b4ff41b96
commit 0ed7660e72
8 changed files with 90 additions and 30 deletions

View File

@ -64,6 +64,7 @@ class BoundaryConditionAdisTS(SQLSubModel):
execute(f""" execute(f"""
CREATE TABLE boundary_condition_adists{ext}( CREATE TABLE boundary_condition_adists{ext}(
{cls.create_db_add_pamhyr_id()}, {cls.create_db_add_pamhyr_id()},
deleted BOOLEAN NOT NULL DEFAULT FALSE,
pollutant INTEGER NOT NULL, pollutant INTEGER NOT NULL,
type TEXT NOT NULL, type TEXT NOT NULL,
node INTEGER, node INTEGER,
@ -205,7 +206,7 @@ class BoundaryConditionAdisTS(SQLSubModel):
return new return new
table = execute( table = execute(
"SELECT pamhyr_id, pollutant, type, node, scenario " + "SELECT pamhyr_id, deleted, pollutant, type, node, scenario " +
"FROM boundary_condition_adists " + "FROM boundary_condition_adists " +
f"WHERE scenario = {scenario.id} " + f"WHERE scenario = {scenario.id} " +
f"AND pamhyr_id NOT IN ({', '.join(map(str, loaded))}) " f"AND pamhyr_id NOT IN ({', '.join(map(str, loaded))}) "
@ -216,6 +217,7 @@ class BoundaryConditionAdisTS(SQLSubModel):
it = iter(row) it = iter(row)
pid = next(it) pid = next(it)
deleted = (next(it) == 1)
pollutant = next(it) pollutant = next(it)
bc_type = next(it) bc_type = next(it)
node = next(it) node = next(it)
@ -227,6 +229,8 @@ class BoundaryConditionAdisTS(SQLSubModel):
status=status, status=status,
owner_scenario=owner_scenario owner_scenario=owner_scenario
) )
if deleted:
bc.set_as_deleted()
bc.type = bc_type bc.type = bc_type
@ -287,10 +291,12 @@ class BoundaryConditionAdisTS(SQLSubModel):
execute( execute(
"INSERT INTO " + "INSERT INTO " +
"boundary_condition_adists(id, pollutant, type, " + "boundary_condition_adists(" +
"pamhyr_id, deleted, pollutant, type, " +
"node, scenario) " + "node, scenario) " +
"VALUES (" + "VALUES (" +
f"{self.id}, {self._pollutant}, " + f"{self.id}, {self._db_format(self.is_deleted())}, " +
f"{self._pollutant}, " +
f"'{self._db_format(self._type)}', {node}, " + f"'{self._db_format(self._type)}', {node}, " +
f"{self._status.scenario_id}" + f"{self._status.scenario_id}" +
")" ")"
@ -302,7 +308,8 @@ class BoundaryConditionAdisTS(SQLSubModel):
execute( execute(
"INSERT INTO " + "INSERT INTO " +
"boundary_condition_data_adists(data0, data1, bc, scenario) " + "boundary_condition_data_adists(" +
"data0, data1, bc, scenario) " +
f"VALUES ('{data0}', {data1}, {self.id}, " + f"VALUES ('{data0}', {data1}, {self.id}, " +
f"{self._status.scenario_id})" f"{self._status.scenario_id})"
) )

View File

@ -19,7 +19,7 @@
from copy import copy from copy import copy
from tools import trace, timer from tools import trace, timer
from Model.Tools.PamhyrList import PamhyrModelList from Model.Tools.PamhyrListExt import PamhyrModelList
from Model.Except import NotImplementedMethodeError from Model.Except import NotImplementedMethodeError
from Model.BoundaryConditionsAdisTS.BoundaryConditionAdisTS \ from Model.BoundaryConditionsAdisTS.BoundaryConditionAdisTS \

View File

@ -54,6 +54,7 @@ class D90AdisTS(SQLSubModel):
execute(f""" execute(f"""
CREATE TABLE d90_adists{ext}( CREATE TABLE d90_adists{ext}(
{cls.create_db_add_pamhyr_id()}, {cls.create_db_add_pamhyr_id()},
deleted BOOLEAN NOT NULL DEFAULT FALSE,
name TEXT NOT NULL, name TEXT NOT NULL,
d90 REAL NOT NULL, d90 REAL NOT NULL,
enabled BOOLEAN NOT NULL, enabled BOOLEAN NOT NULL,
@ -110,7 +111,7 @@ class D90AdisTS(SQLSubModel):
return new return new
table = execute( table = execute(
"SELECT pamhyr_id, name, d90, enabled, scenario " + "SELECT pamhyr_id, deleted, name, d90, enabled, scenario " +
"FROM d90_adists " + "FROM d90_adists " +
f"WHERE scenario = {scenario.id} " + f"WHERE scenario = {scenario.id} " +
f"AND pamhyr_id NOT IN ({', '.join(map(str, loaded))}) " f"AND pamhyr_id NOT IN ({', '.join(map(str, loaded))}) "
@ -121,6 +122,7 @@ class D90AdisTS(SQLSubModel):
it = iter(row) it = iter(row)
pid = next(it) pid = next(it)
deleted = (next(it) == 1)
name = next(it) name = next(it)
value_d90 = next(it) value_d90 = next(it)
enabled = (next(it) == 1) enabled = (next(it) == 1)
@ -132,6 +134,8 @@ class D90AdisTS(SQLSubModel):
status=status, status=status,
owner_scenario=owner_scenario owner_scenario=owner_scenario
) )
if deleted:
d90.set_as_deleted()
d90.d90 = value_d90 d90.d90 = value_d90
d90.enabled = enabled d90.enabled = enabled
@ -165,10 +169,12 @@ class D90AdisTS(SQLSubModel):
execute( execute(
"INSERT INTO " + "INSERT INTO " +
"d90_adists(" + "d90_adists(" +
"pamhyr_id, name, d90, enabled, scenario" + "pamhyr_id, deleted, " +
"name, d90, enabled, scenario" +
") " + ") " +
"VALUES (" + "VALUES (" +
f"{self.id}, '{self._db_format(self._name)}', " + f"{self.id}, {self._db_format(self.is_deleted())}, " +
f"'{self._db_format(self._name)}', " +
f"{d90}, {self._enabled}, {self._status.scenario_id}" + f"{d90}, {self._enabled}, {self._status.scenario_id}" +
")" ")"
) )
@ -222,19 +228,36 @@ class D90AdisTS(SQLSubModel):
return n return n
def delete(self, data): def delete(self, data):
self._data = list( list(
filter( map(
lambda x: x not in data, lambda x: x.set_as_deleted(),
self._data data
) )
) )
self.modified() self.modified()
def delete_i(self, indexes): def delete_i(self, indexes):
for ind in indexes: list(
del self._data[ind] map(
lambda e: e[1].set_as_deleted(),
filter(
lambda e: e[0] in indexes,
enumerate(self._data)
)
)
)
self.modified() self.modified()
def insert(self, index, data): def insert(self, index, data):
self._data.insert(index, data) if data in self._data:
self.undelete([data])
else:
self._data.insert(index, data)
self.modified()
def undelete(self, lst):
for x in lst:
x.set_as_not_deleted()
self.modified() self.modified()

View File

@ -19,7 +19,7 @@
from copy import copy from copy import copy
from tools import trace, timer from tools import trace, timer
from Model.Tools.PamhyrList import PamhyrModelList from Model.Tools.PamhyrListExt import PamhyrModelList
from Model.D90AdisTS.D90AdisTS import D90AdisTS from Model.D90AdisTS.D90AdisTS import D90AdisTS

View File

@ -51,6 +51,7 @@ class D90AdisTSSpec(SQLSubModel):
execute(f""" execute(f"""
CREATE TABLE d90_adists_spec{ext}( CREATE TABLE d90_adists_spec{ext}(
{cls.create_db_add_pamhyr_id()}, {cls.create_db_add_pamhyr_id()},
deleted BOOLEAN NOT NULL DEFAULT FALSE,
d90_default INTEGER NOT NULL, d90_default INTEGER NOT NULL,
name TEXT NOT NULL, name TEXT NOT NULL,
reach INTEGER NOT NULL, reach INTEGER NOT NULL,
@ -137,7 +138,8 @@ class D90AdisTSSpec(SQLSubModel):
return new return new
table = execute( table = execute(
"SELECT pamhyr_id, name, reach, start_rk, end_rk, " + "SELECT pamhyr_id, deleted, " +
f"name, reach, start_rk, end_rk, " +
"d90, enabled, scenario " + "d90, enabled, scenario " +
"FROM d90_adists_spec " + "FROM d90_adists_spec " +
f"WHERE d90_default = {data['d90_default_id']} " + f"WHERE d90_default = {data['d90_default_id']} " +
@ -150,6 +152,7 @@ class D90AdisTSSpec(SQLSubModel):
it = iter(row) it = iter(row)
pid = next(it) pid = next(it)
deleted = (next(it) == 1)
name = next(it) name = next(it)
reach = next(it) reach = next(it)
start_rk = next(it) start_rk = next(it)
@ -164,6 +167,8 @@ class D90AdisTSSpec(SQLSubModel):
status=status, status=status,
owner_scenario=owner_scenario owner_scenario=owner_scenario
) )
if deleted:
new_spec.is_deleted()
new_spec.reach = reach new_spec.reach = reach
new_spec.start_rk = start_rk new_spec.start_rk = start_rk
@ -188,10 +193,12 @@ class D90AdisTSSpec(SQLSubModel):
execute( execute(
"INSERT INTO " + "INSERT INTO " +
"d90_spec(pamhyr_id, d90_default, name, reach, " + "d90_spec(pamhyr_id, deleted, " +
"d90_default, name, reach, " +
"start_rk, end_rk, d90, enabled, scenario) " + "start_rk, end_rk, d90, enabled, scenario) " +
"VALUES (" + "VALUES (" +
f"{self.id}, {d90_default}, " + f"{self.id}, {self._db_format(self.is_deleted())}" +
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}, {self._end_rk}, " + f"{self._start_rk}, {self._end_rk}, " +

View File

@ -282,19 +282,36 @@ class DIFAdisTS(SQLSubModel):
return n return n
def delete(self, data): def delete(self, data):
self._data = list( list(
filter( map(
lambda x: x not in data, lambda x: x.set_as_deleted(),
self._data data
) )
) )
self.modified() self.modified()
def delete_i(self, indexes): def delete_i(self, indexes):
for ind in indexes: list(
del self._data[ind] map(
lambda e: e[1].set_as_deleted(),
filter(
lambda e: e[0] in indexes,
enumerate(self._data)
)
)
)
self.modified() self.modified()
def insert(self, index, data): def insert(self, index, data):
self._data.insert(index, data) if data in self._data:
self.undelete([data])
else:
self._data.insert(index, data)
self.modified()
def undelete(self, lst):
for x in lst:
x.set_as_not_deleted()
self.modified() self.modified()

View File

@ -19,7 +19,7 @@
from copy import copy from copy import copy
from tools import trace, timer from tools import trace, timer
from Model.Tools.PamhyrList import PamhyrModelList from Model.Tools.PamhyrListExt import PamhyrModelList
from Model.DIFAdisTS.DIFAdisTS import DIFAdisTS from Model.DIFAdisTS.DIFAdisTS import DIFAdisTS

View File

@ -59,6 +59,7 @@ class DIFAdisTSSpec(SQLSubModel):
execute(f""" execute(f"""
CREATE TABLE dif_adists_spec{ext}( CREATE TABLE dif_adists_spec{ext}(
{cls.create_db_add_pamhyr_id()}, {cls.create_db_add_pamhyr_id()},
deleted BOOLEAN NOT NULL DEFAULT FALSE,
dif_default INTEGER NOT NULL, dif_default INTEGER NOT NULL,
method TEXT NOT NULL, method TEXT NOT NULL,
reach INTEGER NOT NULL, reach INTEGER NOT NULL,
@ -149,7 +150,7 @@ class DIFAdisTSSpec(SQLSubModel):
return new return new
table = execute( table = execute(
"SELECT pamhyr_id, method, reach, start_rk, end_rk, " + "SELECT pamhyr_id, deleted, method, reach, start_rk, end_rk, " +
"dif, b, c, enabled, scenario " + "dif, b, c, enabled, scenario " +
"FROM dif_adists_spec " + "FROM dif_adists_spec " +
f"WHERE dif_default = {data['dif_default_id']} " + f"WHERE dif_default = {data['dif_default_id']} " +
@ -162,6 +163,7 @@ class DIFAdisTSSpec(SQLSubModel):
it = iter(row) it = iter(row)
id = next(it) id = next(it)
deleted = (next(it) == 1)
method = next(it) method = next(it)
reach = next(it) reach = next(it)
start_rk = next(it) start_rk = next(it)
@ -178,6 +180,8 @@ class DIFAdisTSSpec(SQLSubModel):
status=status, status=status,
owner_scenario=owner_scenario owner_scenario=owner_scenario
) )
if deleted:
new_spec.set_as_deleted()
new_spec.reach = reach new_spec.reach = reach
new_spec.start_rk = start_rk new_spec.start_rk = start_rk
@ -204,10 +208,12 @@ class DIFAdisTSSpec(SQLSubModel):
execute( execute(
"INSERT INTO " + "INSERT INTO " +
"dif_adists_spec(pamhyr_id, dif_default, method, reach, " + "dif_adists_spec(pamhyr_id, deleted, " +
"dif_default, method, reach, " +
"start_rk, end_rk, dif, b, c, enabled, scenario) " + "start_rk, end_rk, dif, b, c, enabled, scenario) " +
"VALUES (" + "VALUES (" +
f"{self.id}, {dif_default}, " + f"{self.id}, {self._db_format(self.is_deleted())}" +
f"{dif_default}, " +
f"'{self._db_format(self._method)}', " + f"'{self._db_format(self._method)}', " +
f"{self._reach}, " + f"{self._reach}, " +
f"{self._start_rk}, {self._end_rk}, " + f"{self._start_rk}, {self._end_rk}, " +