mirror of https://gitlab.com/pamhyr/pamhyr2
Pamhyr2: Some fixes to prepare db update to 0.1.0.
parent
d8fe1d8b81
commit
16350b4dec
|
|
@ -28,24 +28,15 @@ logger = logging.getLogger()
|
|||
|
||||
|
||||
class Profile(object):
|
||||
_id_cnt = 0
|
||||
|
||||
def __init__(self, id: int = -1, num: int = 0,
|
||||
rk: float = 0.0, name: str = "",
|
||||
code1: int = 0, code2: int = 0,
|
||||
_type: str = "", reach=None,
|
||||
status=None):
|
||||
super(Profile, self).__init__()
|
||||
super(Profile, self).__init__(id)
|
||||
|
||||
self._status = status
|
||||
|
||||
if id == -1:
|
||||
self.id = Profile._id_cnt
|
||||
else:
|
||||
self.id = id
|
||||
|
||||
Profile._id_cnt = max(self.id, Profile._id_cnt+1)
|
||||
|
||||
self._num = int(num)
|
||||
self._code1 = int(code1)
|
||||
self._code2 = int(code2)
|
||||
|
|
|
|||
|
|
@ -20,24 +20,15 @@ from Model.Network.Node import Node
|
|||
|
||||
|
||||
class Edge(object):
|
||||
_id_cnt = 0
|
||||
|
||||
def __init__(self, id: int, name: str,
|
||||
node1: Node = None,
|
||||
node2: Node = None,
|
||||
status=None):
|
||||
super(Edge, self).__init__()
|
||||
super(Edge, self).__init__(id)
|
||||
|
||||
self._status = status
|
||||
|
||||
if id == -1:
|
||||
type(self)._id_cnt += 1
|
||||
self.id = type(self)._id_cnt
|
||||
else:
|
||||
self.id = id
|
||||
|
||||
self._name = name
|
||||
|
||||
self.node1 = node1
|
||||
self.node2 = node2
|
||||
|
||||
|
|
@ -49,7 +40,7 @@ class Edge(object):
|
|||
if name == "name":
|
||||
ret = self.name
|
||||
elif name == "id":
|
||||
ret = self.id
|
||||
ret = self.pamhyr_id
|
||||
elif name == "node1":
|
||||
ret = self.node1.name
|
||||
elif name == "node2":
|
||||
|
|
@ -63,7 +54,7 @@ class Edge(object):
|
|||
if name == "name":
|
||||
self._name = value
|
||||
elif name == "id":
|
||||
self.id = value
|
||||
self.pamhyr_id = value
|
||||
elif name == "node1":
|
||||
self.node1 = value
|
||||
elif name == "node2":
|
||||
|
|
@ -73,6 +64,10 @@ class Edge(object):
|
|||
|
||||
self._status.modified()
|
||||
|
||||
@property
|
||||
def id(self):
|
||||
return self.pamhyr_id
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
name = self._name
|
||||
|
|
|
|||
|
|
@ -20,23 +20,15 @@ from Model.Network.Point import Point
|
|||
|
||||
|
||||
class Node(object):
|
||||
_id_cnt = 0
|
||||
|
||||
def __init__(self, id: int, name: str,
|
||||
x: float = 0.0, y: float = 0.0,
|
||||
status=None):
|
||||
super(Node, self).__init__()
|
||||
super(Node, self).__init__(id)
|
||||
|
||||
self._status = status
|
||||
|
||||
if id == -1:
|
||||
type(self)._id_cnt += 1
|
||||
self.id = type(self)._id_cnt
|
||||
else:
|
||||
self.id = id
|
||||
|
||||
if name == "":
|
||||
self._name = f"Node {self.id}"
|
||||
self._name = f"Node #{self.pamhyr_id}"
|
||||
else:
|
||||
self._name = name
|
||||
|
||||
|
|
@ -48,7 +40,7 @@ class Node(object):
|
|||
if key == "name":
|
||||
ret = self._name
|
||||
elif key == "id":
|
||||
ret = self.id
|
||||
ret = self.pamhyr_id
|
||||
elif key == "pos":
|
||||
ret = f"({self.pos.x},{self.pos.y})"
|
||||
|
||||
|
|
@ -58,7 +50,7 @@ class Node(object):
|
|||
if key == "name":
|
||||
self._name = value
|
||||
elif key == "id":
|
||||
self.id = value
|
||||
self.pamhyr_id = value
|
||||
|
||||
self._status.modified()
|
||||
|
||||
|
|
|
|||
|
|
@ -178,6 +178,7 @@ class Reservoir(SQLSubModel):
|
|||
@classmethod
|
||||
def _db_update_to_0_1_0(cls, execute, data):
|
||||
table = "reservoir"
|
||||
nodes = data['id2pid']['river_node']
|
||||
|
||||
cls.update_db_add_pamhyr_id(
|
||||
execute, table,
|
||||
|
|
@ -196,6 +197,25 @@ class Reservoir(SQLSubModel):
|
|||
execute(f"DROP TABLE {table}")
|
||||
execute(f"ALTER TABLE {table}_tmp RENAME TO {table}")
|
||||
|
||||
cls._db_update_to_0_1_0_set_node_pid(execute, table, nodes)
|
||||
|
||||
@classmethod
|
||||
def _db_update_to_0_1_0_set_node_pid(cls, execute, table, nodes):
|
||||
bcs = execute(
|
||||
f"SELECT pamhyr_id, node FROM {table}"
|
||||
)
|
||||
|
||||
for row in bcs:
|
||||
it = iter(row)
|
||||
pid = next(it)
|
||||
node_id = next(it)
|
||||
|
||||
execute(
|
||||
f"UPDATE {table} " +
|
||||
f"SET node = {nodes[node_id]}, " +
|
||||
f"WHERE pamhyr_id = {pid}"
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def _db_load(cls, execute, data=None):
|
||||
new = []
|
||||
|
|
|
|||
|
|
@ -191,8 +191,6 @@ class RiverReach(Edge, SQLSubModel):
|
|||
def _db_update(cls, execute, version, data=None):
|
||||
major, minor, release = version.strip().split(".")
|
||||
|
||||
logger.info(f"data = {data}")
|
||||
|
||||
if major == minor == "0":
|
||||
cls._db_update_to_0_1_0(execute, data)
|
||||
|
||||
|
|
@ -462,7 +460,8 @@ class River(Graph, SQLSubModel):
|
|||
"WHERE " +
|
||||
" OR ".join(
|
||||
map(
|
||||
lambda n: f"( id <> {n.id} )", els
|
||||
lambda n: f"( pamhyr_id <> {n.pamhyr_id} )",
|
||||
els
|
||||
)
|
||||
)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ class SQLModel(SQL):
|
|||
|
||||
ok = True
|
||||
for obj in objs:
|
||||
ok &= obj._db_save(fn)
|
||||
ok &= obj._db_save(fn, data={})
|
||||
|
||||
self.commit()
|
||||
return ok
|
||||
|
|
@ -116,7 +116,7 @@ class SQLModel(SQL):
|
|||
def _count(self):
|
||||
raise NotImplementedMethodeError(self, self._count)
|
||||
|
||||
def _save_count(self, objs, data=None):
|
||||
def _save_count(self, objs, data={}):
|
||||
counter = {
|
||||
"insert": 0,
|
||||
"update": 0,
|
||||
|
|
@ -137,7 +137,7 @@ class SQLModel(SQL):
|
|||
|
||||
ok = True
|
||||
for obj in objs:
|
||||
ok &= obj._db_save(fn)
|
||||
ok &= obj._db_save(fn, data=data)
|
||||
|
||||
logger.debug(counter)
|
||||
|
||||
|
|
@ -218,8 +218,12 @@ class SQLSubModel(PamhyrID):
|
|||
raise NotImplementedMethodeError(cls, cls._db_load)
|
||||
|
||||
def _save_submodel(self, execute, objs, data=None):
|
||||
ok = True
|
||||
|
||||
for o in objs:
|
||||
o._db_save(execute, data=data)
|
||||
ok &= o._db_save(execute, data=data)
|
||||
|
||||
return ok
|
||||
|
||||
def _db_save(self, execute, data=None):
|
||||
"""Save class data to data base
|
||||
|
|
|
|||
Loading…
Reference in New Issue