diff --git a/src/Model/Friction/Friction.py b/src/Model/Friction/Friction.py index db1a60db772c318dd57fdfdf3fe8ab8b5c9ecaac..2e6ec259bf4b3c09e218d30aa987a9cdfeac18c0 100644 --- a/src/Model/Friction/Friction.py +++ b/src/Model/Friction/Friction.py @@ -16,10 +16,13 @@ # -*- coding: utf-8 -*- +import logging + from tools import trace, timer from Model.Tools.PamhyrDB import SQLSubModel +logger = logging.getLogger() class Friction(SQLSubModel): def __init__(self, name: str = "", status=None): @@ -60,7 +63,10 @@ class Friction(SQLSubModel): @classmethod def _db_load(cls, execute, data=None): new = [] - reach = data["parent"] # Reach object + + logger.info(data) + + reach = data["reach"] status = data["status"] stricklers = data["stricklers"].stricklers @@ -69,9 +75,6 @@ class Friction(SQLSubModel): f"FROM friction WHERE reach = {reach.id}" ) - for _ in table: - new.append(None) - for row in table: ind = row[0] # Get stricklers @@ -86,7 +89,11 @@ class Friction(SQLSubModel): sec.begin_strickler = bs sec.end_strickler = es - yield ind, sec + new.append((ind, sec)) + + logger.info(new) + + return new def _db_save(self, execute, data=None): ind = data["ind"] @@ -116,6 +123,10 @@ class Friction(SQLSubModel): def edge(self): return self._edge + @property + def reach(self): + return self._edge + @edge.setter def edge(self, edge): self._edge = edge diff --git a/src/Model/Friction/FrictionList.py b/src/Model/Friction/FrictionList.py index 20c3319764400f516972ad33f4349ebb578b1040..6a5a6c091b63cce40896c52987b9d8f21c1a7c6c 100644 --- a/src/Model/Friction/FrictionList.py +++ b/src/Model/Friction/FrictionList.py @@ -50,10 +50,12 @@ class FrictionList(PamhyrModelList): def _db_load(cls, execute, data=None): new = cls(status=data['status']) - new._lst = Friction._db_load( + ilst = Friction._db_load( execute, data ) + new._lst = list(map(lambda x: x[1], sorted(ilst))) + return new def _db_save(self, execute, data=None): diff --git a/src/Model/Geometry/PointXYZ.py b/src/Model/Geometry/PointXYZ.py index 06a6ccf61ecd97e8f888363e5514282c432a3c7f..57c13a373d66dfd29a5a110a91de162e4f9a5b0d 100644 --- a/src/Model/Geometry/PointXYZ.py +++ b/src/Model/Geometry/PointXYZ.py @@ -116,7 +116,7 @@ class PointXYZ(Point, SQLSubModel): sl = self._sl.id if self._sl is not None else -1 sql = ( - "INSERT OR REPLACE INTO " + + "INSERT INTO " + "geometry_pointXYZ(ind, name, x, y, z, profile, sl) " + "VALUES (" + f"{ind}, '{self._db_format(self._name)}', " + diff --git a/src/Model/Geometry/ProfileXYZ.py b/src/Model/Geometry/ProfileXYZ.py index ad3ebb5ea61e9a23b8c8b2c75efe3bdc52f12599..495fbac10c737209f33138ee7f2a05b8acd359be 100644 --- a/src/Model/Geometry/ProfileXYZ.py +++ b/src/Model/Geometry/ProfileXYZ.py @@ -115,9 +115,6 @@ class ProfileXYZ(Profile, SQLSubModel): f"WHERE reach = {reach.id}" ) - for _ in table: - profiles.append(None) - for row in table: id = row[0] ind = row[1] @@ -132,7 +129,7 @@ class ProfileXYZ(Profile, SQLSubModel): id=id, num=num, name=name, kp=kp, code1=code1, code2=code2, - reach=data["parent"], + reach=reach, status=status ) @@ -151,10 +148,6 @@ class ProfileXYZ(Profile, SQLSubModel): yield ind, new - # profiles[ind] = new - - # return profiles - def _db_save(self, execute, data=None): ok = True ind = data["ind"] diff --git a/src/Model/Geometry/Reach.py b/src/Model/Geometry/Reach.py index 5351a9cbbabeb1dd7cf9a62012ccb8542b779168..3c02f16a68541a78b4fd79dfdd09d2c5aeb3f63b 100644 --- a/src/Model/Geometry/Reach.py +++ b/src/Model/Geometry/Reach.py @@ -61,7 +61,7 @@ class Reach(SQLSubModel): @classmethod def _db_load(cls, execute, data=None): - new = cls(status=data["status"], parent=data["parent"]) + new = cls(status=data["status"], parent=data["reach"]) new._profiles = ProfileXYZ._db_load( execute, diff --git a/src/Model/HydraulicStructures/HydraulicStructures.py b/src/Model/HydraulicStructures/HydraulicStructures.py index f5fa356c37cf64bc7f4ae69b094c871292628d14..9234d511673e60b1fc9eb083f02945a34077de72 100644 --- a/src/Model/HydraulicStructures/HydraulicStructures.py +++ b/src/Model/HydraulicStructures/HydraulicStructures.py @@ -140,6 +140,14 @@ class HydraulicStructure(SQLSubModel): if self._output_reach is not None: output_reach_id = self._output_reach.id + input_kp = -1 + if self.input_kp is not None: + input_kp = self.input_kp + + output_kp = -1 + if self.output_kp is not None: + output_kp = self.output_kp + sql = ( "INSERT INTO " + "hydraulic_structures(" + @@ -149,7 +157,7 @@ class HydraulicStructure(SQLSubModel): "VALUES (" + f"{self.id}, '{self._db_format(self._name)}', " + f"{self._db_format(self.enabled)}, " + - f"{self.input_kp}, {self.output_kp}, " + + f"{input_kp}, {output_kp}, " + f"{input_reach_id}, {output_reach_id}" + ")" ) diff --git a/src/Model/River.py b/src/Model/River.py index d995d2c389b6133be698e826608acd800b9ffc5c..2ba5a54f4105813ee8f92eeebd08064de915ad41 100644 --- a/src/Model/River.py +++ b/src/Model/River.py @@ -157,7 +157,9 @@ class RiverReach(Edge, SQLSubModel): data = {} table = execute( - "SELECT id, name, enable, node1, node2 FROM river_reach") + "SELECT id, name, enable, node1, node2 FROM river_reach" + ) + for row in table: # Update id counter cls._id_cnt = max(cls._id_cnt, row[0]) @@ -172,10 +174,9 @@ class RiverReach(Edge, SQLSubModel): new = cls(id, name, node1, node2, status=data["status"]) new.enable(enable=enable) - data["reach"] = id - data["parent"] = new - new._reach = Reach._db_load(execute, data) + data["reach"] = new + new._reach = Reach._db_load(execute, data) new._frictions = FrictionList._db_load(execute, data) reachs.append(new)