From 94509a1638e00eaee0515779499ab46a0172cdcd Mon Sep 17 00:00:00 2001
From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr>
Date: Wed, 5 Jul 2023 09:33:11 +0200
Subject: [PATCH] BC, LC: Fix SQL export.

---
 src/Model/BoundaryCondition/BoundaryCondition.py         | 5 ++++-
 src/Model/BoundaryCondition/BoundaryConditionList.py     | 2 ++
 src/Model/LateralContribution/LateralContribution.py     | 4 +++-
 src/Model/LateralContribution/LateralContributionList.py | 2 ++
 4 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/Model/BoundaryCondition/BoundaryCondition.py b/src/Model/BoundaryCondition/BoundaryCondition.py
index 79bcb775..152a6269 100644
--- a/src/Model/BoundaryCondition/BoundaryCondition.py
+++ b/src/Model/BoundaryCondition/BoundaryCondition.py
@@ -96,7 +96,10 @@ class BoundaryCondition(SQLSubModel):
                 name = row[1],
                 status = data['status']
             )
-            bc.node = next(filter(lambda n: n.id == row[3], data["nodes"]))
+
+            bc.node = None
+            if row[3] != -1:
+                bc.node = next(filter(lambda n: n.id == row[3], data["nodes"]))
 
             values = execute(
                 "SELECT ind, data0, data1 FROM boundary_condition_data " +
diff --git a/src/Model/BoundaryCondition/BoundaryConditionList.py b/src/Model/BoundaryCondition/BoundaryConditionList.py
index c59f97b0..d14a870b 100644
--- a/src/Model/BoundaryCondition/BoundaryConditionList.py
+++ b/src/Model/BoundaryCondition/BoundaryConditionList.py
@@ -53,6 +53,8 @@ class BoundaryConditionList(SQLSubModel):
         return new
 
     def _sql_save(self, execute, data = None):
+        execute("DELETE FROM boundary_condition")
+
         if data is None:
             data = {}
 
diff --git a/src/Model/LateralContribution/LateralContribution.py b/src/Model/LateralContribution/LateralContribution.py
index e5427d05..5098e9ba 100644
--- a/src/Model/LateralContribution/LateralContribution.py
+++ b/src/Model/LateralContribution/LateralContribution.py
@@ -96,7 +96,9 @@ class LateralContribution(SQLSubModel):
                 name = row[1],
                 status = data['status']
             )
-            lc.edge = next(filter(lambda e: e.id == row[3], data["edges"]))
+            lc.edge = None
+            if row[3] != -1:
+                lc.edge = next(filter(lambda e: e.id == row[3], data["edges"]))
             lc._begin_kp = row[4]
             lc._end_kp = row[5]
 
diff --git a/src/Model/LateralContribution/LateralContributionList.py b/src/Model/LateralContribution/LateralContributionList.py
index 810a3188..4d6a8567 100644
--- a/src/Model/LateralContribution/LateralContributionList.py
+++ b/src/Model/LateralContribution/LateralContributionList.py
@@ -51,6 +51,8 @@ class LateralContributionList(SQLSubModel):
         return new
 
     def _sql_save(self, execute, data = None):
+        execute("DELETE FROM lateral_contribution")
+
         if data is None:
             data = {}
 
-- 
GitLab