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