mirror of https://gitlab.com/pamhyr/pamhyr2
Model, SQL: Fix solver parameters loading.
parent
1b9115ef87
commit
9cf3177b57
|
|
@ -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
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue