Model, SQL: Fix solver parameters loading.

results
Pierre-Antoine Rouby 2023-07-03 11:46:49 +02:00
parent 1b9115ef87
commit 9cf3177b57
2 changed files with 43 additions and 27 deletions

View File

@ -251,9 +251,7 @@ class River(Graph, SQLSubModel):
)
# Parameters
for solver in new._parameters:
data["solver"] = solver
new._parameters[solver] = SolverParametersList(
new._parameters = SolverParametersList._sql_load(
execute,
data
)

View File

@ -2,6 +2,7 @@
from copy import copy
from tools import trace, timer
from Solver.Solvers import solver_type_list
from Model.DB import SQLSubModel
@ -81,32 +82,33 @@ class SolverParametersList(SQLSubModel):
@classmethod
def _sql_load(cls, execute, data = None):
status = data["status"]
solver = data["solver"]
solvers = execute("SELECT DISTINCT solver FROM solver_parameter")
new = {}
new = cls(solver_type = solver, status = status)
for solver in solvers:
solver = solver[0]
if solver not in solver_type_list:
continue
st = solver_type_list[solver]
n = cls(solver_type = st, status = status)
table = execute(
"SELECT ind, name, value " +
"FROM solver_parameter " +
f"WHERE solver = '{solver.type}'"
f"WHERE solver = '{solver}'"
)
for _ in table:
new._parameters.append(None)
for row in table:
ind = row[0]
name = row[1]
value = row[2]
p = cls(
name = name,
value = value,
status = status
)
new._parameters[ind] = p
n.set_value(name, value)
return stricklers
new[solver] = n
return new
def _sql_save(self, execute, data = None):
t = self._solver._type
@ -146,6 +148,22 @@ class SolverParametersList(SQLSubModel):
self._parameters[index] = new
self._status.modified()
def set_value(self, key, value):
for p in self._parameters:
if p["name"] == key:
p["value"] = value
self._status.modified()
return
self._parameters.append(
Parameter(
name = key,
value = value,
status = self._status
)
)
self._status.modified()
def new(self, index):
n = Parameter(status = self._status)
self._parameters.insert(index, n)