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

Friction: Add id to friction and default name to stricklers.

Showing with 26 additions and 12 deletions
+26 -12
......@@ -26,11 +26,21 @@ logger = logging.getLogger()
class Friction(SQLSubModel):
def __init__(self, name: str = "", status=None):
_id_cnt = 0
def __init__(self, id: int = -1, name: str = "",
status=None):
super(Friction, self).__init__()
self._status = status
if id == -1:
self.id = Friction._id_cnt
else:
self.id = id
Friction._id_cnt = max(self.id, Friction._id_cnt+1)
self._name = name
self._edge = None
self._begin_kp = 0.0
......@@ -42,7 +52,7 @@ class Friction(SQLSubModel):
def _db_create(cls, execute):
execute("""
CREATE TABLE friction(
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
id INTEGER NOT NULL PRIMARY KEY,
ind INTEGER NOT NULL,
begin_kp REAL NOT NULL,
end_kp REAL NOT NULL,
......@@ -70,28 +80,29 @@ class Friction(SQLSubModel):
stricklers = data["stricklers"].stricklers
table = execute(
"SELECT ind, begin_kp, end_kp, begin_strickler, end_strickler " +
"SELECT id, ind, begin_kp, end_kp, begin_strickler, end_strickler " +
f"FROM friction WHERE reach = {reach.id}"
)
for row in table:
ind = row[0]
id = row[0]
ind = row[1]
# Get stricklers
if int(row[3]) == -1:
if int(row[4]) == -1:
bs = None
else:
bs = next(filter(lambda s: s.id == row[3], stricklers))
bs = next(filter(lambda s: s.id == row[4], stricklers))
if int(row[4]) == -1:
if int(row[5]) == -1:
es = None
else:
es = next(filter(lambda s: s.id == row[4], stricklers))
es = next(filter(lambda s: s.id == row[5], stricklers))
# Create friction
sec = cls(status=status)
sec.edge = reach
sec.begin_kp = row[1]
sec.end_kp = row[2]
sec.begin_kp = row[2]
sec.end_kp = row[3]
sec.begin_strickler = bs
sec.end_strickler = es
......@@ -112,10 +123,11 @@ class Friction(SQLSubModel):
execute(
"INSERT INTO " +
"friction(ind, begin_kp, end_kp, " +
"friction(id, ind, begin_kp, end_kp, " +
"reach, begin_strickler, end_strickler) " +
"VALUES (" +
f"{ind}, {self._begin_kp}, {self._end_kp}, " +
f"{self.id}, {ind}, " +
f"{self._begin_kp}, {self._end_kp}, " +
f"{self._edge.id}, " +
f"{b_s_id}, {e_s_id}" +
")"
......
......@@ -120,6 +120,8 @@ class Stricklers(SQLSubModel):
@property
def name(self):
if self._name == "":
return f"K{self.id + 1}"
return self._name
@name.setter
......
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