mirror of https://gitlab.com/pamhyr/pamhyr2
AdisTS AdisTT: fix initial conditions in scenario mode, now correctly saved in database, and load correctly, not creating duplicata when two datas have same ID with different scenario_id
parent
afe0217655
commit
252ac257fe
|
|
@ -31,10 +31,11 @@ class ICAdisTSSpec(SQLSubModel):
|
|||
_sub_classes = []
|
||||
|
||||
def __init__(self, id: int = -1, name: str = "",
|
||||
status=None, owner_scenario=None):
|
||||
super(ICAdisTSSpec, self).__init__()
|
||||
|
||||
self._status = status
|
||||
status=None, owner_scenario=-1):
|
||||
super(ICAdisTSSpec, self).__init__(
|
||||
id=id, status=status,
|
||||
owner_scenario=owner_scenario
|
||||
)
|
||||
|
||||
self._name_section = name
|
||||
self._reach = None
|
||||
|
|
@ -190,7 +191,7 @@ class ICAdisTSSpec(SQLSubModel):
|
|||
new_spec.rate = rate
|
||||
new_spec.enabled = enabled
|
||||
|
||||
# loaded.add(pid)
|
||||
loaded.add(id)
|
||||
new.append(new_spec)
|
||||
|
||||
data["scenario"] = scenario.parent
|
||||
|
|
@ -234,7 +235,7 @@ class ICAdisTSSpec(SQLSubModel):
|
|||
@name.setter
|
||||
def name(self, name):
|
||||
self._name_section = name
|
||||
self._status.modified()
|
||||
self.modified()
|
||||
|
||||
@property
|
||||
def reach(self):
|
||||
|
|
@ -243,7 +244,7 @@ class ICAdisTSSpec(SQLSubModel):
|
|||
@reach.setter
|
||||
def reach(self, reach):
|
||||
self._reach = reach
|
||||
self._status.modified()
|
||||
self.modified()
|
||||
|
||||
@property
|
||||
def start_rk(self):
|
||||
|
|
@ -252,7 +253,7 @@ class ICAdisTSSpec(SQLSubModel):
|
|||
@start_rk.setter
|
||||
def start_rk(self, start_rk):
|
||||
self._start_rk = start_rk
|
||||
self._status.modified()
|
||||
self.modified()
|
||||
|
||||
@property
|
||||
def end_rk(self):
|
||||
|
|
@ -261,7 +262,7 @@ class ICAdisTSSpec(SQLSubModel):
|
|||
@end_rk.setter
|
||||
def end_rk(self, end_rk):
|
||||
self._end_rk = end_rk
|
||||
self._status.modified()
|
||||
self.modified()
|
||||
|
||||
@property
|
||||
def concentration(self):
|
||||
|
|
@ -270,7 +271,7 @@ class ICAdisTSSpec(SQLSubModel):
|
|||
@concentration.setter
|
||||
def concentration(self, concentration):
|
||||
self._concentration = concentration
|
||||
self._status.modified()
|
||||
self.modified()
|
||||
|
||||
@property
|
||||
def eg(self):
|
||||
|
|
@ -279,7 +280,7 @@ class ICAdisTSSpec(SQLSubModel):
|
|||
@eg.setter
|
||||
def eg(self, eg):
|
||||
self._eg = eg
|
||||
self._status.modified()
|
||||
self.modified()
|
||||
|
||||
@property
|
||||
def em(self):
|
||||
|
|
@ -288,7 +289,7 @@ class ICAdisTSSpec(SQLSubModel):
|
|||
@em.setter
|
||||
def em(self, em):
|
||||
self._em = em
|
||||
self._status.modified()
|
||||
self.modified()
|
||||
|
||||
@property
|
||||
def ed(self):
|
||||
|
|
@ -297,7 +298,7 @@ class ICAdisTSSpec(SQLSubModel):
|
|||
@ed.setter
|
||||
def ed(self, ed):
|
||||
self._ed = ed
|
||||
self._status.modified()
|
||||
self.modified()
|
||||
|
||||
@property
|
||||
def rate(self):
|
||||
|
|
@ -306,7 +307,7 @@ class ICAdisTSSpec(SQLSubModel):
|
|||
@rate.setter
|
||||
def rate(self, rate):
|
||||
self._rate = rate
|
||||
self._status.modified()
|
||||
self.modified()
|
||||
|
||||
@property
|
||||
def enabled(self):
|
||||
|
|
@ -315,4 +316,4 @@ class ICAdisTSSpec(SQLSubModel):
|
|||
@enabled.setter
|
||||
def enabled(self, enabled):
|
||||
self._enabled = enabled
|
||||
self._status.modified()
|
||||
self.modified()
|
||||
|
|
|
|||
|
|
@ -31,10 +31,11 @@ class ICTemperatureSpec(SQLSubModel):
|
|||
_sub_classes = []
|
||||
|
||||
def __init__(self, id: int = -1, name: str = "",
|
||||
status=None, owner_scenario=None):
|
||||
super(ICTemperatureSpec, self).__init__()
|
||||
|
||||
self._status = status
|
||||
status=None, owner_scenario=-1):
|
||||
super(ICTemperatureSpec, self).__init__(
|
||||
id=id, status=status,
|
||||
owner_scenario=owner_scenario
|
||||
)
|
||||
|
||||
self._name_section = name
|
||||
self._reach = None
|
||||
|
|
@ -122,7 +123,7 @@ class ICTemperatureSpec(SQLSubModel):
|
|||
new_spec.end_rk = end_rk
|
||||
new_spec.temperature = temperature
|
||||
|
||||
# loaded.add(pid)
|
||||
loaded.add(id)
|
||||
new.append(new_spec)
|
||||
|
||||
data["scenario"] = scenario.parent
|
||||
|
|
@ -163,7 +164,7 @@ class ICTemperatureSpec(SQLSubModel):
|
|||
@name.setter
|
||||
def name(self, name):
|
||||
self._name_section = name
|
||||
self._status.modified()
|
||||
self.modified()
|
||||
|
||||
@property
|
||||
def reach(self):
|
||||
|
|
@ -172,7 +173,7 @@ class ICTemperatureSpec(SQLSubModel):
|
|||
@reach.setter
|
||||
def reach(self, reach):
|
||||
self._reach = reach
|
||||
self._status.modified()
|
||||
self.modified()
|
||||
|
||||
@property
|
||||
def start_rk(self):
|
||||
|
|
@ -181,7 +182,7 @@ class ICTemperatureSpec(SQLSubModel):
|
|||
@start_rk.setter
|
||||
def start_rk(self, start_rk):
|
||||
self._start_rk = start_rk
|
||||
self._status.modified()
|
||||
self.modified()
|
||||
|
||||
@property
|
||||
def end_rk(self):
|
||||
|
|
@ -190,7 +191,7 @@ class ICTemperatureSpec(SQLSubModel):
|
|||
@end_rk.setter
|
||||
def end_rk(self, end_rk):
|
||||
self._end_rk = end_rk
|
||||
self._status.modified()
|
||||
self.modified()
|
||||
|
||||
@property
|
||||
def temperature(self):
|
||||
|
|
@ -199,4 +200,4 @@ class ICTemperatureSpec(SQLSubModel):
|
|||
@temperature.setter
|
||||
def temperature(self, temperature):
|
||||
self._temperature = temperature
|
||||
self._status.modified()
|
||||
self.modified()
|
||||
|
|
|
|||
|
|
@ -198,13 +198,14 @@ class InitialConditionTableModel(PamhyrTableModel):
|
|||
if self._headers[column] != "reach":
|
||||
self._undo.push(
|
||||
SetCommandSpec(
|
||||
self._lst, row, self._headers[column], value
|
||||
self._data, self._lst, row,
|
||||
self._headers[column], value
|
||||
)
|
||||
)
|
||||
elif self._headers[column] == "reach":
|
||||
self._undo.push(
|
||||
SetCommandSpec(
|
||||
self._lst, row, self._headers[column],
|
||||
self._data, self._lst, row, self._headers[column],
|
||||
self._river.edge(value).id
|
||||
)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -80,31 +80,31 @@ class SetCommand(QUndoCommand):
|
|||
|
||||
|
||||
class SetCommandSpec(QUndoCommand):
|
||||
def __init__(self, data, row, column, new_value):
|
||||
def __init__(self, parent, data, row, column, new_value):
|
||||
QUndoCommand.__init__(self)
|
||||
|
||||
self._data = data
|
||||
self._row = row
|
||||
self._parent = parent
|
||||
self._value = data[row]
|
||||
self._column = column
|
||||
|
||||
if self._column == "name":
|
||||
self._old = self._data[self._row].name
|
||||
self._old = self._value.name
|
||||
elif self._column == "reach":
|
||||
self._old = self._data[self._row].reach
|
||||
self._old = self._value.reach
|
||||
elif self._column == "start_rk":
|
||||
self._old = self._data[self._row].start_rk
|
||||
self._old = self._value.start_rk
|
||||
elif self._column == "end_rk":
|
||||
self._old = self._data[self._row].end_rk
|
||||
self._old = self._value.end_rk
|
||||
elif self._column == "concentration":
|
||||
self._old = self._data[self._row].concentration
|
||||
self._old = self._value.concentration
|
||||
elif self._column == "eg":
|
||||
self._old = self._data[self._row].eg
|
||||
self._old = self._value.eg
|
||||
elif self._column == "em":
|
||||
self._old = self._data[self._row].em
|
||||
self._old = self._value.em
|
||||
elif self._column == "ed":
|
||||
self._old = self._data[self._row].ed
|
||||
self._old = self._value.ed
|
||||
elif self._column == "rate":
|
||||
self._old = self._data[self._row].rate
|
||||
self._old = self._value.rate
|
||||
|
||||
_type = float
|
||||
if column == "name":
|
||||
|
|
@ -115,44 +115,12 @@ class SetCommandSpec(QUndoCommand):
|
|||
self._new = _type(new_value)
|
||||
|
||||
def undo(self):
|
||||
if self._column == "name":
|
||||
self._data[self._row].name = self._old
|
||||
elif self._column == "reach":
|
||||
self._data[self._row].reach = self._old
|
||||
elif self._column == "start_rk":
|
||||
self._data[self._row].start_rk = self._old
|
||||
elif self._column == "end_rk":
|
||||
self._data[self._row].end_rk = self._old
|
||||
elif self._column == "concentration":
|
||||
self._data[self._row].concentration = self._old
|
||||
elif self._column == "eg":
|
||||
self._data[self._row].eg = self._old
|
||||
elif self._column == "em":
|
||||
self._data[self._row].em = self._old
|
||||
elif self._column == "ed":
|
||||
self._data[self._row].ed = self._old
|
||||
elif self._column == "rate":
|
||||
self._data[self._row].rate = self._old
|
||||
setattr(self._value, self._column, self._old)
|
||||
self._parent.modified()
|
||||
|
||||
def redo(self):
|
||||
if self._column == "name":
|
||||
self._data[self._row].name = self._new
|
||||
elif self._column == "reach":
|
||||
self._data[self._row].reach = self._new
|
||||
elif self._column == "start_rk":
|
||||
self._data[self._row].start_rk = self._new
|
||||
elif self._column == "end_rk":
|
||||
self._data[self._row].end_rk = self._new
|
||||
elif self._column == "concentration":
|
||||
self._data[self._row].concentration = self._new
|
||||
elif self._column == "eg":
|
||||
self._data[self._row].eg = self._new
|
||||
elif self._column == "em":
|
||||
self._data[self._row].em = self._new
|
||||
elif self._column == "ed":
|
||||
self._data[self._row].ed = self._new
|
||||
elif self._column == "rate":
|
||||
self._data[self._row].rate = self._new
|
||||
setattr(self._value, self._column, self._new)
|
||||
self._parent.modified()
|
||||
|
||||
|
||||
class AddCommand(QUndoCommand):
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ from PyQt5.QtWidgets import (
|
|||
from View.Tools.PamhyrTable import PamhyrTableModel
|
||||
|
||||
from View.InitialConditionsTemperature.UndoCommand import (
|
||||
SetCommand, AddCommand, SetCommandSpec,
|
||||
AddCommand, SetCommandSpec,
|
||||
DelCommand,
|
||||
)
|
||||
|
||||
|
|
@ -214,22 +214,15 @@ class InitialConditionTableModel(PamhyrTableModel):
|
|||
column = index.column()
|
||||
|
||||
try:
|
||||
if self._headers[column] in ["name", "temperature"]:
|
||||
self._undo.push(
|
||||
SetCommand(
|
||||
self._lst, row, self._headers[column], value
|
||||
)
|
||||
)
|
||||
else:
|
||||
self._undo.push(
|
||||
SetCommandSpec(
|
||||
self._lst, row, self._headers[column],
|
||||
(self._river.edge(value).id
|
||||
if self._headers[column] == "reach"
|
||||
else value
|
||||
)
|
||||
self._undo.push(
|
||||
SetCommandSpec(
|
||||
self._data, self._lst, row, self._headers[column],
|
||||
(self._river.edge(value).id
|
||||
if self._headers[column] == "reach"
|
||||
else value
|
||||
)
|
||||
)
|
||||
)
|
||||
except Exception as e:
|
||||
logger.info(e)
|
||||
logger.debug(traceback.format_exc())
|
||||
|
|
|
|||
|
|
@ -62,21 +62,21 @@ class SetCommand(QUndoCommand):
|
|||
|
||||
|
||||
class SetCommandSpec(QUndoCommand):
|
||||
def __init__(self, data, row, column, new_value):
|
||||
def __init__(self, parent, data, row, column, new_value):
|
||||
QUndoCommand.__init__(self)
|
||||
|
||||
self._data = data
|
||||
self._row = row
|
||||
self._parent = parent
|
||||
self._value = data[row]
|
||||
self._column = column
|
||||
|
||||
if self._column == "name":
|
||||
self._old = self._data[self._row].name
|
||||
self._old = self._value.name
|
||||
elif self._column == "reach":
|
||||
self._old = self._data[self._row].reach
|
||||
self._old = self._value.reach
|
||||
elif self._column == "rk":
|
||||
self._old = self._data[self._row].start_rk
|
||||
self._old = self._value.start_rk
|
||||
elif self._column == "temperature":
|
||||
self._old = self._data[self._row].temperature
|
||||
self._old = self._value.temperature
|
||||
|
||||
_type = float
|
||||
if column == "name":
|
||||
|
|
@ -88,25 +88,27 @@ class SetCommandSpec(QUndoCommand):
|
|||
|
||||
def undo(self):
|
||||
if self._column == "name":
|
||||
self._data[self._row].name = self._old
|
||||
self._value.name = self._old
|
||||
elif self._column == "reach":
|
||||
self._data[self._row].reach = self._old
|
||||
self._value.reach = self._old
|
||||
elif self._column == "rk":
|
||||
self._data[self._row].start_rk = self._old
|
||||
self._data[self._row].end_rk = self._old
|
||||
self._value.start_rk = self._old
|
||||
self._value.end_rk = self._old
|
||||
elif self._column == "temperature":
|
||||
self._data[self._row].temperature = self._old
|
||||
self._value.temperature = self._old
|
||||
self._parent.modified()
|
||||
|
||||
def redo(self):
|
||||
if self._column == "name":
|
||||
self._data[self._row].name = self._new
|
||||
self._value.name = self._new
|
||||
elif self._column == "reach":
|
||||
self._data[self._row].reach = self._new
|
||||
self._value.reach = self._new
|
||||
elif self._column == "rk":
|
||||
self._data[self._row].start_rk = self._new
|
||||
self._data[self._row].end_rk = self._new
|
||||
self._value.start_rk = self._new
|
||||
self._value.end_rk = self._new
|
||||
elif self._column == "temperature":
|
||||
self._data[self._row].temperature = self._new
|
||||
self._value.temperature = self._new
|
||||
self._parent.modified()
|
||||
|
||||
|
||||
class AddCommand(QUndoCommand):
|
||||
|
|
|
|||
Loading…
Reference in New Issue