Merge branch 'master' into region
This commit is contained in:
@@ -19,7 +19,7 @@ def get_source(name: str, node: str) -> dict[str, Any]:
|
||||
return {}
|
||||
d = {}
|
||||
d['node'] = str(s['node'])
|
||||
d['s_type'] = str(s['type'])
|
||||
d['s_type'] = str(s['s_type'])
|
||||
d['strength'] = float(s['strength'])
|
||||
d['pattern'] = str(s['pattern']) if s['pattern'] != None else None
|
||||
return d
|
||||
@@ -57,8 +57,8 @@ def _set_source(name: str, cs: ChangeSet) -> DbChangeSet:
|
||||
raw_new[key] = new_dict[key]
|
||||
new = Source(raw_new)
|
||||
|
||||
redo_sql = f"update sources set type = {new.f_s_type}, strength = {new.f_strength}, pattern = {new.f_pattern} where node = {new.f_node};"
|
||||
undo_sql = f"update sources set type = {old.f_s_type}, strength = {old.f_strength}, pattern = {old.f_pattern} where node = {old.f_node};"
|
||||
redo_sql = f"update sources set s_type = {new.f_s_type}, strength = {new.f_strength}, pattern = {new.f_pattern} where node = {new.f_node};"
|
||||
undo_sql = f"update sources set s_type = {old.f_s_type}, strength = {old.f_strength}, pattern = {old.f_pattern} where node = {old.f_node};"
|
||||
|
||||
redo_cs = g_update_prefix | new.as_dict()
|
||||
undo_cs = g_update_prefix | old.as_dict()
|
||||
@@ -73,7 +73,7 @@ def set_source(name: str, cs: ChangeSet) -> ChangeSet:
|
||||
def _add_source(name: str, cs: ChangeSet) -> DbChangeSet:
|
||||
new = Source(cs.operations[0])
|
||||
|
||||
redo_sql = f"insert into sources (node, type, strength, pattern) values ({new.f_node}, {new.f_s_type}, {new.f_strength}, {new.f_pattern});"
|
||||
redo_sql = f"insert into sources (node, s_type, strength, pattern) values ({new.f_node}, {new.f_s_type}, {new.f_strength}, {new.f_pattern});"
|
||||
undo_sql = f"delete from sources where node = {new.f_node};"
|
||||
|
||||
redo_cs = g_add_prefix | new.as_dict()
|
||||
@@ -90,7 +90,7 @@ def _delete_source(name: str, cs: ChangeSet) -> DbChangeSet:
|
||||
old = Source(get_source(name, cs.operations[0]['node']))
|
||||
|
||||
redo_sql = f"delete from sources where node = {old.f_node};"
|
||||
undo_sql = f"insert into sources (node, type, strength, pattern) values ({old.f_node}, {old.f_s_type}, {old.f_strength}, {old.f_pattern});"
|
||||
undo_sql = f"insert into sources (node, s_type, strength, pattern) values ({old.f_node}, {old.f_s_type}, {old.f_strength}, {old.f_pattern});"
|
||||
|
||||
redo_cs = g_delete_prefix | old.as_id_dict()
|
||||
undo_cs = g_add_prefix | old.as_dict()
|
||||
@@ -121,7 +121,7 @@ def inp_in_source(line: str) -> str:
|
||||
pattern = str(tokens[3]) if num_without_desc >= 4 else None
|
||||
pattern = f"'{pattern}'" if pattern != None else 'null'
|
||||
|
||||
return f"insert into sources (node, type, strength, pattern) values ('{node}', '{s_type}', {strength}, {pattern});"
|
||||
return f"insert into sources (node, s_type, strength, pattern) values ('{node}', '{s_type}', {strength}, {pattern});"
|
||||
|
||||
|
||||
|
||||
@@ -130,7 +130,7 @@ def inp_out_source(name: str) -> list[str]:
|
||||
objs = read_all(name, 'select * from sources')
|
||||
for obj in objs:
|
||||
node = obj['node']
|
||||
s_type = obj['type']
|
||||
s_type = obj['s_type']
|
||||
strength = obj['strength']
|
||||
pattern = obj['pattern'] if obj['pattern'] != None else ''
|
||||
lines.append(f'{node} {s_type} {strength} {pattern}')
|
||||
|
||||
@@ -23,7 +23,7 @@ def get_scada_device(name: str, id: str) -> dict[str, Any]:
|
||||
d['id'] = str(sm['id'])
|
||||
d['name'] = str(sm['name']) if sm['name'] != None else None
|
||||
d['address'] = str(sm['address']) if sm['address'] != None else None
|
||||
d['sd_type'] = str(sm['type']) if sm['type'] != None else None
|
||||
d['sd_type'] = str(sm['sd_type']) if sm['sd_type'] != None else None
|
||||
return d
|
||||
|
||||
|
||||
@@ -59,8 +59,8 @@ def _set_scada_device(name: str, cs: ChangeSet) -> DbChangeSet:
|
||||
raw_new[key] = new_dict[key]
|
||||
new = ScadaDevice(raw_new)
|
||||
|
||||
redo_sql = f"update scada_device set name = {new.f_name}, address = {new.f_address}, type = {new.f_sd_type} where id = {new.f_id};"
|
||||
undo_sql = f"update scada_device set name = {old.f_name}, address = {old.f_address}, type = {old.f_sd_type} where id = {old.f_id};"
|
||||
redo_sql = f"update scada_device set name = {new.f_name}, address = {new.f_address}, sd_type = {new.f_sd_type} where id = {new.f_id};"
|
||||
undo_sql = f"update scada_device set name = {old.f_name}, address = {old.f_address}, sd_type = {old.f_sd_type} where id = {old.f_id};"
|
||||
|
||||
redo_cs = g_update_prefix | new.as_dict()
|
||||
undo_cs = g_update_prefix | old.as_dict()
|
||||
@@ -77,7 +77,7 @@ def set_scada_device(name: str, cs: ChangeSet) -> ChangeSet:
|
||||
def _add_scada_device(name: str, cs: ChangeSet) -> DbChangeSet:
|
||||
new = ScadaDevice(cs.operations[0])
|
||||
|
||||
redo_sql = f"insert into scada_device (id, name, address, type) values ({new.f_id}, {new.f_name}, {new.f_address}, {new.f_sd_type});"
|
||||
redo_sql = f"insert into scada_device (id, name, address, sd_type) values ({new.f_id}, {new.f_name}, {new.f_address}, {new.f_sd_type});"
|
||||
undo_sql = f"delete from scada_device where id = {new.f_id};"
|
||||
|
||||
redo_cs = g_add_prefix | new.as_dict()
|
||||
@@ -96,7 +96,7 @@ def _delete_scada_device(name: str, cs: ChangeSet) -> DbChangeSet:
|
||||
old = ScadaDevice(get_scada_device(name, cs.operations[0]['id']))
|
||||
|
||||
redo_sql = f"delete from scada_device where id = {old.f_id};"
|
||||
undo_sql = f"insert into scada_device (id, name, address, type) values ({old.f_id}, {old.f_name}, {old.f_address}, {old.f_sd_type});"
|
||||
undo_sql = f"insert into scada_device (id, name, address, sd_type) values ({old.f_id}, {old.f_name}, {old.f_address}, {old.f_sd_type});"
|
||||
|
||||
redo_cs = g_delete_prefix | old.as_id_dict()
|
||||
undo_cs = g_add_prefix | old.as_dict()
|
||||
|
||||
@@ -29,7 +29,7 @@ def get_valve(name: str, id: str) -> dict[str, Any]:
|
||||
d['node1'] = str(p['node1'])
|
||||
d['node2'] = str(p['node2'])
|
||||
d['diameter'] = float(p['diameter'])
|
||||
d['v_type'] = str(p['type'])
|
||||
d['v_type'] = str(p['v_type'])
|
||||
d['setting'] = str(p['setting'])
|
||||
d['minor_loss'] = float(p['minor_loss'])
|
||||
return d
|
||||
@@ -73,8 +73,8 @@ def _set_valve(name: str, cs: ChangeSet) -> DbChangeSet:
|
||||
raw_new[key] = new_dict[key]
|
||||
new = Valve(raw_new)
|
||||
|
||||
redo_sql = f"update valves set node1 = {new.f_node1}, node2 = {new.f_node2}, diameter = {new.f_diameter}, type = {new.f_v_type}, setting = {new.f_setting}, minor_loss = {new.f_minor_loss} where id = {new.f_id};"
|
||||
undo_sql = f"update valves set node1 = {old.f_node1}, node2 = {old.f_node2}, diameter = {old.f_diameter}, type = {old.f_v_type}, setting = {old.f_setting}, minor_loss = {old.f_minor_loss} where id = {old.f_id};"
|
||||
redo_sql = f"update valves set node1 = {new.f_node1}, node2 = {new.f_node2}, diameter = {new.f_diameter}, v_type = {new.f_v_type}, setting = {new.f_setting}, minor_loss = {new.f_minor_loss} where id = {new.f_id};"
|
||||
undo_sql = f"update valves set node1 = {old.f_node1}, node2 = {old.f_node2}, diameter = {old.f_diameter}, v_type = {old.f_v_type}, setting = {old.f_setting}, minor_loss = {old.f_minor_loss} where id = {old.f_id};"
|
||||
|
||||
redo_cs = g_update_prefix | new.as_dict()
|
||||
undo_cs = g_update_prefix | old.as_dict()
|
||||
@@ -94,7 +94,7 @@ def _add_valve(name: str, cs: ChangeSet) -> DbChangeSet:
|
||||
new = Valve(cs.operations[0])
|
||||
|
||||
redo_sql = f"insert into _link (id, type) values ({new.f_id}, {new.f_type});"
|
||||
redo_sql += f"\ninsert into valves (id, node1, node2, diameter, type, setting, minor_loss) values ({new.f_id}, {new.f_node1}, {new.f_node2}, {new.f_diameter}, {new.f_v_type}, {new.f_setting}, {new.f_minor_loss});"
|
||||
redo_sql += f"\ninsert into valves (id, node1, node2, diameter, v_type, setting, minor_loss) values ({new.f_id}, {new.f_node1}, {new.f_node2}, {new.f_diameter}, {new.f_v_type}, {new.f_setting}, {new.f_minor_loss});"
|
||||
|
||||
undo_sql = f"delete from valves where id = {new.f_id};"
|
||||
undo_sql += f"\ndelete from _link where id = {new.f_id};"
|
||||
@@ -120,7 +120,7 @@ def _delete_valve(name: str, cs: ChangeSet) -> DbChangeSet:
|
||||
redo_sql += f"\ndelete from _link where id = {old.f_id};"
|
||||
|
||||
undo_sql = f"insert into _link (id, type) values ({old.f_id}, {old.f_type});"
|
||||
undo_sql += f"\ninsert into valves (id, node1, node2, diameter, type, setting, minor_loss) values ({old.f_id}, {old.f_node1}, {old.f_node2}, {old.f_diameter}, {old.f_v_type}, {old.f_setting}, {old.f_minor_loss});"
|
||||
undo_sql += f"\ninsert into valves (id, node1, node2, diameter, v_type, setting, minor_loss) values ({old.f_id}, {old.f_node1}, {old.f_node2}, {old.f_diameter}, {old.f_v_type}, {old.f_setting}, {old.f_minor_loss});"
|
||||
|
||||
redo_cs = g_delete_prefix | old.as_id_dict()
|
||||
undo_cs = g_add_prefix | old.as_dict()
|
||||
@@ -160,7 +160,7 @@ def inp_in_valve(line: str) -> str:
|
||||
minor_loss = float(tokens[6]) if len(tokens) >= 7 else 0.0
|
||||
desc = str(tokens[-1]) if has_desc else None
|
||||
|
||||
return f"insert into _link (id, type) values ('{id}', 'valve');insert into valves (id, node1, node2, diameter, type, setting, minor_loss) values ('{id}', '{node1}', '{node2}', {diameter}, '{v_type}', '{setting}', {minor_loss});"
|
||||
return f"insert into _link (id, type) values ('{id}', 'valve');insert into valves (id, node1, node2, diameter, v_type, setting, minor_loss) values ('{id}', '{node1}', '{node2}', {diameter}, '{v_type}', '{setting}', {minor_loss});"
|
||||
|
||||
|
||||
def inp_out_valve(name: str) -> list[str]:
|
||||
@@ -171,7 +171,7 @@ def inp_out_valve(name: str) -> list[str]:
|
||||
node1 = obj['node1']
|
||||
node2 = obj['node2']
|
||||
diameter = obj['diameter']
|
||||
v_type = obj['type']
|
||||
v_type = obj['v_type']
|
||||
setting = obj['setting']
|
||||
minor_loss = obj['minor_loss']
|
||||
desc = ';'
|
||||
|
||||
47
main.py
47
main.py
@@ -34,7 +34,32 @@ app = FastAPI()
|
||||
|
||||
app.add_middleware(GZipMiddleware, minimum_size=1000)
|
||||
|
||||
### project
|
||||
############################################################
|
||||
# extension_data
|
||||
############################################################
|
||||
@app.get('/getallextensiondatakeys/')
|
||||
async def fastapi_get_all_extension_data_keys(network: str) -> list[str]:
|
||||
return get_all_extension_data_keys(network)
|
||||
|
||||
@app.get('/getallextensiondata/')
|
||||
async def fastapi_get_all_extension_data(network: str) -> dict[str, Any]:
|
||||
return get_all_extension_data(network)
|
||||
|
||||
@app.get('/getextensiondata/')
|
||||
async def fastapi_get_extension_data(network: str, key: str) -> str | None:
|
||||
return get_extension_data(network, key)
|
||||
|
||||
@app.post('/setextensiondata')
|
||||
async def fastapi_set_extension_data(network: str, req: Request) -> ChangeSet:
|
||||
props = await req.json()
|
||||
print(props)
|
||||
cs = set_extension_data(network, ChangeSet(props))
|
||||
print(cs.operations[0])
|
||||
return cs
|
||||
|
||||
############################################################
|
||||
# project
|
||||
############################################################
|
||||
|
||||
@app.get('/listprojects/')
|
||||
async def fastapi_list_projects() -> list[str]:
|
||||
@@ -91,6 +116,14 @@ async def fastapi_export_inp(network: str) -> ChangeSet:
|
||||
open_project(network)
|
||||
op['vertex'] = json.dumps(get_all_vertices(network))
|
||||
op['scada'] = json.dumps(get_all_scada_elements(network))
|
||||
db = get_extension_data(network, 'scada_db')
|
||||
print(db)
|
||||
scada_db = ''
|
||||
if db:
|
||||
scada_db = db
|
||||
print(scada_db)
|
||||
op['scada_db'] = scada_db
|
||||
|
||||
close_project(network)
|
||||
|
||||
return cs
|
||||
@@ -213,7 +246,9 @@ async def fastapi_execute_batch_commands(network: str, req: Request)-> ChangeSet
|
||||
jo_root = await req.json()
|
||||
cs: ChangeSet = ChangeSet()
|
||||
cs.operations = jo_root['operations']
|
||||
return execute_batch_commands(network, cs)
|
||||
rcs = execute_batch_commands(network, cs)
|
||||
print(rcs)
|
||||
return rcs
|
||||
|
||||
@app.post("/compressedbatch/")
|
||||
async def fastapi_execute_compressed_batch_commands(network: str, req: Request)-> ChangeSet:
|
||||
@@ -1538,11 +1573,11 @@ async def fastapi_delete_region(network: str, req: Request) -> ChangeSet:
|
||||
# water_distribution 34
|
||||
############################################################
|
||||
@app.post('/distributedemandtonodes/')
|
||||
async def fastapi_distribute_demand_to_nodes(network: str, demand: float, nodes: list[str], type: str = DISTRIBUTION_TYPE_ADD) -> ChangeSet:
|
||||
async def fastapi_distribute_demand_to_nodes(network: str, demand: float, nodes: list[str], type: str) -> ChangeSet:
|
||||
return distribute_demand_to_nodes(network, demand, nodes, type)
|
||||
|
||||
@app.post("/distributedemandtoregion/")
|
||||
async def fastapi_distribute_demand_to_region(network: str, demand: float, region: str, type: str = DISTRIBUTION_TYPE_ADD) -> ChangeSet:
|
||||
async def fastapi_distribute_demand_to_region(network: str, demand: float, region: str, type: str) -> ChangeSet:
|
||||
return distribute_demand_to_region(network, demand, region, type)
|
||||
|
||||
|
||||
@@ -1550,7 +1585,7 @@ async def fastapi_distribute_demand_to_region(network: str, demand: float, regio
|
||||
# district_metering_area 35
|
||||
############################################################
|
||||
@app.post('/calculatedistrictmeteringarea/')
|
||||
async def fastapi_calculate_district_metering_area(network: str, nodes: list[str], part_count: int = 1, part_type: int = PARTITION_TYPE_RB) -> list[list[str]]:
|
||||
async def fastapi_calculate_district_metering_area(network: str, nodes: list[str], part_count: int, part_type: int) -> list[list[str]]:
|
||||
return calculate_district_metering_area(network, nodes, part_count, part_type)
|
||||
|
||||
|
||||
@@ -1558,7 +1593,7 @@ async def fastapi_calculate_district_metering_area(network: str, nodes: list[str
|
||||
# service_area 36
|
||||
############################################################
|
||||
@app.post('/calculateservicearea/')
|
||||
async def fastapi_calculate_service_area(network: str, time_index: int = 0) -> dict[str, Any]:
|
||||
async def fastapi_calculate_service_area(network: str, time_index: int) -> dict[str, Any]:
|
||||
return calculate_service_area(network, time_index)
|
||||
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ create type sources_type as enum ('CONCEN', 'MASS', 'FLOWPACED', 'SETPOINT');
|
||||
create table sources
|
||||
(
|
||||
node varchar(32) primary key references _node(id)
|
||||
, type sources_type not null
|
||||
, s_type sources_type not null
|
||||
, strength float8 not null
|
||||
, pattern varchar(32) references _pattern(id)
|
||||
);
|
||||
|
||||
@@ -5,5 +5,5 @@ create table scada_device
|
||||
id text primary key
|
||||
, name text
|
||||
, address text
|
||||
, type scada_device_type
|
||||
, sd_type scada_device_type
|
||||
);
|
||||
|
||||
@@ -8,7 +8,7 @@ create table valves
|
||||
, node1 varchar(32) references _node(id) not null
|
||||
, node2 varchar(32) references _node(id) not null
|
||||
, diameter float8 not null
|
||||
, type valves_type not null
|
||||
, v_type valves_type not null
|
||||
, setting text not null
|
||||
, minor_loss float8 not null
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user