Commit 9cf3177b authored by Pierre-Antoine Rouby's avatar Pierre-Antoine Rouby
Browse files

Model, SQL: Fix solver parameters loading.

Showing with 42 additions and 26 deletions
+42 -26
......@@ -251,12 +251,10 @@ class River(Graph, SQLSubModel):
)
# Parameters
for solver in new._parameters:
data["solver"] = solver
new._parameters[solver] = SolverParametersList(
execute,
data
)
new._parameters = SolverParametersList._sql_load(
execute,
data
)
return new
......
......@@ -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
table = execute(
"SELECT ind, name, value " +
"FROM solver_parameter " +
f"WHERE solver = '{solver.type}'"
)
st = solver_type_list[solver]
n = cls(solver_type = st, status = status)
for _ in table:
new._parameters.append(None)
table = execute(
"SELECT ind, name, value " +
"FROM solver_parameter " +
f"WHERE solver = '{solver}'"
)
for row in table:
ind = row[0]
name = row[1]
value = row[2]
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)
new[solver] = n
return stricklers
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)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment