cleaned the board utility a bit
This commit is contained in:
@@ -13,5 +13,6 @@ def main():
|
|||||||
loop = asyncio.new_event_loop()
|
loop = asyncio.new_event_loop()
|
||||||
loop.run_until_complete(ui())
|
loop.run_until_complete(ui())
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -44,25 +44,3 @@ async def export_iplist(file_location, ip_list_selected):
|
|||||||
for item in window['ip_table'].Values:
|
for item in window['ip_table'].Values:
|
||||||
await file.write(str(item[0]) + "\n")
|
await file.write(str(item[0]) + "\n")
|
||||||
await update_ui_with_data("status", "")
|
await update_ui_with_data("status", "")
|
||||||
|
|
||||||
|
|
||||||
async def import_config_file(file_location):
|
|
||||||
await update_ui_with_data("status", "Importing")
|
|
||||||
if not os.path.exists(file_location):
|
|
||||||
return
|
|
||||||
else:
|
|
||||||
async with aiofiles.open(file_location, mode='r') as file:
|
|
||||||
config = await file.read()
|
|
||||||
await update_ui_with_data("config", await bos_config_convert(toml.loads(config)))
|
|
||||||
await update_ui_with_data("status", "")
|
|
||||||
|
|
||||||
|
|
||||||
async def export_config_file(file_location, config):
|
|
||||||
await update_ui_with_data("status", "Exporting")
|
|
||||||
config = toml.loads(config)
|
|
||||||
config['format']['generator'] = 'upstream_config_util'
|
|
||||||
config['format']['timestamp'] = int(time.time())
|
|
||||||
config = toml.dumps(config)
|
|
||||||
async with aiofiles.open(file_location, mode='w+') as file:
|
|
||||||
await file.write(await general_config_convert_bos(config))
|
|
||||||
await update_ui_with_data("status", "")
|
|
||||||
|
|||||||
@@ -36,26 +36,6 @@ async def scan_network(network):
|
|||||||
await update_ui_with_data("status", "")
|
await update_ui_with_data("status", "")
|
||||||
|
|
||||||
|
|
||||||
async def miner_light(ips: list):
|
|
||||||
await asyncio.gather(*[flip_light(ip) for ip in ips])
|
|
||||||
|
|
||||||
|
|
||||||
async def flip_light(ip):
|
|
||||||
ip_list = window['ip_table'].Widget
|
|
||||||
miner = await miner_factory.get_miner(ip)
|
|
||||||
index = [item[0] for item in window["ip_table"].Values].index(ip)
|
|
||||||
index_tags = ip_list.item(index)['tags']
|
|
||||||
if "light" not in index_tags:
|
|
||||||
ip_list.item(index, tags=([*index_tags, "light"]))
|
|
||||||
window['ip_table'].update(row_colors=[(index, "white", "red")])
|
|
||||||
await miner.fault_light_on()
|
|
||||||
else:
|
|
||||||
index_tags.remove("light")
|
|
||||||
ip_list.item(index, tags=index_tags)
|
|
||||||
window['ip_table'].update(row_colors=[(index, "black", "white")])
|
|
||||||
await miner.fault_light_off()
|
|
||||||
|
|
||||||
|
|
||||||
async def refresh_data(ip_list: list):
|
async def refresh_data(ip_list: list):
|
||||||
await update_ui_with_data("status", "Getting Data")
|
await update_ui_with_data("status", "Getting Data")
|
||||||
await update_ui_with_data("hr_total", "")
|
await update_ui_with_data("hr_total", "")
|
||||||
|
|||||||
@@ -1,50 +0,0 @@
|
|||||||
from API import APIError
|
|
||||||
|
|
||||||
|
|
||||||
# noinspection PyPep8
|
|
||||||
async def safe_parse_api_data(data: dict or list, *path: str or int, idx: int = 0):
|
|
||||||
path = [*path]
|
|
||||||
if len(path) == idx+1:
|
|
||||||
if isinstance(path[idx], str):
|
|
||||||
if isinstance(data, dict):
|
|
||||||
if path[idx] in data.keys():
|
|
||||||
return data[path[idx]]
|
|
||||||
elif isinstance(path[idx], int):
|
|
||||||
if isinstance(data, list):
|
|
||||||
if len(data) > path[idx]:
|
|
||||||
return data[path[idx]]
|
|
||||||
else:
|
|
||||||
if isinstance(path[idx], str):
|
|
||||||
if isinstance(data, dict):
|
|
||||||
if path[idx] in data.keys():
|
|
||||||
parsed_data = await safe_parse_api_data(data[path[idx]], idx=idx+1, *path)
|
|
||||||
# has to be == None, or else it fails on 0.0 hashrates
|
|
||||||
# noinspection PyPep8
|
|
||||||
if parsed_data == None:
|
|
||||||
raise APIError(f"Data parsing failed on path index {idx} - \nKey: {path[idx]} \nData: {data}")
|
|
||||||
return parsed_data
|
|
||||||
else:
|
|
||||||
if idx == 0:
|
|
||||||
raise APIError(f"Data parsing failed on path index {idx} - \nKey: {path[idx]} \nData: {data}")
|
|
||||||
return False
|
|
||||||
else:
|
|
||||||
if idx == 0:
|
|
||||||
raise APIError(f"Data parsing failed on path index {idx} - \nKey: {path[idx]} \nData: {data}")
|
|
||||||
return False
|
|
||||||
elif isinstance(path[idx], int):
|
|
||||||
if isinstance(data, list):
|
|
||||||
if len(data) > path[idx]:
|
|
||||||
parsed_data = await safe_parse_api_data(data[path[idx]], idx=idx+1, *path)
|
|
||||||
# has to be == None, or else it fails on 0.0 hashrates
|
|
||||||
# noinspection PyPep8
|
|
||||||
if parsed_data == None:
|
|
||||||
raise APIError(f"Data parsing failed on path index {idx} - \nKey: {path[idx]} \nData: {data}")
|
|
||||||
return parsed_data
|
|
||||||
else:
|
|
||||||
if idx == 0:
|
|
||||||
raise APIError(f"Data parsing failed on path index {idx} - \nKey: {path[idx]} \nData: {data}")
|
|
||||||
return False
|
|
||||||
else:
|
|
||||||
if idx == 0:
|
|
||||||
raise APIError(f"Data parsing failed on path index {idx} - \nKey: {path[idx]} \nData: {data}")
|
|
||||||
return False
|
|
||||||
@@ -3,7 +3,7 @@ import sys
|
|||||||
import PySimpleGUI as sg
|
import PySimpleGUI as sg
|
||||||
|
|
||||||
from tools.bad_board_util.layout import window
|
from tools.bad_board_util.layout import window
|
||||||
from tools.bad_board_util.func.miners import refresh_data, scan_and_get_data, miner_light
|
from tools.bad_board_util.func.miners import refresh_data, scan_and_get_data
|
||||||
from tools.bad_board_util.func.files import import_iplist, export_iplist
|
from tools.bad_board_util.func.files import import_iplist, export_iplist
|
||||||
from tools.bad_board_util.func.ui import sort_data, copy_from_table
|
from tools.bad_board_util.func.ui import sort_data, copy_from_table
|
||||||
|
|
||||||
@@ -40,8 +40,6 @@ async def ui():
|
|||||||
window["ip_table"].update(select_rows=())
|
window["ip_table"].update(select_rows=())
|
||||||
else:
|
else:
|
||||||
window["ip_table"].update(select_rows=([row for row in range(len(window["ip_table"].Values))]))
|
window["ip_table"].update(select_rows=([row for row in range(len(window["ip_table"].Values))]))
|
||||||
if event == 'light':
|
|
||||||
asyncio.create_task(miner_light([window['ip_table'].Values[item][0] for item in value['ip_table']]))
|
|
||||||
if event == "import_iplist":
|
if event == "import_iplist":
|
||||||
asyncio.create_task(import_iplist(value["file_iplist"]))
|
asyncio.create_task(import_iplist(value["file_iplist"]))
|
||||||
if event == "export_iplist":
|
if event == "export_iplist":
|
||||||
|
|||||||
Reference in New Issue
Block a user