Compare commits

...

4 Commits

8 changed files with 33 additions and 28 deletions

View File

@ -30,6 +30,7 @@ logger = logging.getLogger()
class Friction(SQLSubModel): class Friction(SQLSubModel):
def __init__(self, id: int = -1, def __init__(self, id: int = -1,
reach=None,
status=None, status=None,
owner_scenario=-1): owner_scenario=-1):
super(Friction, self).__init__( super(Friction, self).__init__(
@ -37,7 +38,7 @@ class Friction(SQLSubModel):
owner_scenario=owner_scenario owner_scenario=owner_scenario
) )
self._reach = None self._reach = reach
self._begin_rk = 0.0 self._begin_rk = 0.0
self._end_rk = 0.0 self._end_rk = 0.0
self._begin_strickler = None self._begin_strickler = None
@ -64,7 +65,7 @@ class Friction(SQLSubModel):
) )
""") """)
if ext == "_tmp": if ext != "":
return True return True
return cls._create_submodel(execute) return cls._create_submodel(execute)
@ -217,7 +218,7 @@ class Friction(SQLSubModel):
return ( return (
self._begin_strickler._owner_scenario == ssi self._begin_strickler._owner_scenario == ssi
or self._end_strickler._owner_scenario == ssi # or self._end_strickler._owner_scenario == ssi
or super(Friction, self).must_be_saved() or super(Friction, self).must_be_saved()
) )

View File

@ -86,19 +86,12 @@ class FrictionList(PamhyrModelList):
) )
) )
@property
def lst(self):
if not isinstance(self._lst, list):
self._lst = self._get_frictions_list()
return self._lst
@property @property
def frictions(self): def frictions(self):
return self.lst return self.lst
def new(self, index): def new(self, reach, index):
n = Friction(status=self._status) n = Friction(reach=reach, status=self._status)
self._lst.insert(index, n) self._lst.insert(index, n)
self._status.modified() self._status.modified()
return n return n

View File

@ -540,7 +540,7 @@ class ProfileXYZ(Profile, SQLSubModel):
""" """
x, y, z = (0., 0., 0.) x, y, z = (0., 0., 0.)
if len(self._points) >= index: if 0 < len(self._points) >= index:
x, y, z = self._points[index - 1].get_coordinate() x, y, z = self._points[index - 1].get_coordinate()
point = PointXYZ(x=x, y=y, z=z, profile=self, status=self._status) point = PointXYZ(x=x, y=y, z=z, profile=self, status=self._status)

View File

@ -83,9 +83,6 @@ class Reach(SQLSubModel):
return new return new
def _db_save(self, execute, data=None): def _db_save(self, execute, data=None):
if not self.must_be_saved():
return True
ok = True ok = True
execute( execute(

View File

@ -240,7 +240,7 @@ class HydraulicStructure(SQLSubModel):
owner_scenario=owner_scenario owner_scenario=owner_scenario
) )
if deleted: if deleted:
new.set_as_deleted() hs.set_as_deleted()
hs.enabled = enabled hs.enabled = enabled
hs.input_reach, hs.output_reach = reduce( hs.input_reach, hs.output_reach = reduce(

View File

@ -28,13 +28,15 @@ class Data(SQLSubModel):
_sub_classes = [] _sub_classes = []
def __init__(self, id: int = -1, def __init__(self, id: int = -1,
elevation: float = 0.,
surface: float = 0.,
status=None, owner_scenario=-1): status=None, owner_scenario=-1):
super(Data, self).__init__( super(Data, self).__init__(
id=id, status=status, id=id, status=status,
owner_scenario=owner_scenario owner_scenario=owner_scenario
) )
self._data = [] self._data = [elevation, surface]
@classmethod @classmethod
def _db_create(cls, execute, ext=""): def _db_create(cls, execute, ext=""):
@ -335,12 +337,12 @@ class Reservoir(SQLSubModel):
execute( execute(
"DELETE FROM reservoir " + "DELETE FROM reservoir " +
f"WHERE pamhyr_id = {self.pamhyr_id}" + f"WHERE pamhyr_id = {self.pamhyr_id} " +
f"AND scenario = {self._status.scenario_id}" f"AND scenario = {self._status.scenario_id}"
) )
execute( execute(
"DELETE FROM reservoir_data " + "DELETE FROM reservoir_data " +
f"WHERE reservoir = {self.pamhyr_id}" + f"WHERE reservoir = {self.pamhyr_id} " +
f"AND scenario = {self._status.scenario_id}" f"AND scenario = {self._status.scenario_id}"
) )
@ -428,12 +430,23 @@ class Reservoir(SQLSubModel):
return (new_0, new_1) return (new_0, new_1)
def add(self, index: int): def add(self, index: int):
value = (self._default_elevation, self._default_surface) data = Data(
self._data.insert(index, value) elevation = self._default_elevation,
surface = self._default_surface,
status = self._status,
)
self._data.insert(index, data)
self.modified() self.modified()
return value return data
def insert(self, index: int, value): def insert(self, index: int, value):
if type(value) is tuple or type(value) is list:
value = Data(
elevation = value[0],
surface = value[1]
)
self._data.insert(index, value) self._data.insert(index, value)
self.modified() self.modified()
@ -482,12 +495,11 @@ class Reservoir(SQLSubModel):
lst = [] lst = []
for r in _range: for r in _range:
lst.append(r) lst.append(r)
return lst return lst
def _set_i_c_v(self, index, column, value): def _set_i_c_v(self, index, column, value):
v = list(self._data[index]) self._data[index][column] = value
v[column] = value
self._data[index] = tuple(v)
self.modified() self.modified()
def set_i_elevation(self, index: int, value): def set_i_elevation(self, index: int, value):

View File

@ -137,7 +137,9 @@ class AddCommand(QUndoCommand):
def redo(self): def redo(self):
if self._new is None: if self._new is None:
self._new = self._frictions.new(self._index) self._new = self._frictions.new(
self._reach, self._index
)
self._new.edge = self._reach self._new.edge = self._reach
else: else:
self._frictions.insert(self._index, self._new) self._frictions.insert(self._index, self._new)
@ -182,7 +184,7 @@ class SortCommand(QUndoCommand):
def redo(self): def redo(self):
self._frictions.sort( self._frictions.sort(
reverse=self._reverse, reverse=self._reverse,
key=lambda x: x.name key=lambda x: x._begin_rk
) )
if self._indexes is None: if self._indexes is None:
self._indexes = list( self._indexes = list(

Binary file not shown.