SAT9/.resources/2de74f61b1e49a57ebb2b489577044177605c03a472d2b8424432619ccd14d74
2025-04-18 19:44:27 +04:00

64 lines
1.5 KiB
Plaintext

import csv
from StringIO import StringIO
def check_csv_file(event):
"""
This function checks if the CSV file was saved as CSV-UF8 settings if it has removes extra data bytes from the file.
Args:
event : Containes the file data to be uploaded
Returns:
a string representing the file that is to be uploaded.
Raises:
None
"""
file_bytes = event.file.getBytes()
if bytearray.fromhex("ef bb bf") == bytearray(file_bytes[0:3]):
# Strip first three bytes
file_bytes = file_bytes[3:]
return file_bytes.tostring()
def add_device_btn_code(whid, event):
reader = csv.DictReader(StringIO(FileHandler.uploader.check_csv_file(event)))
data ={}
def get_child():
return {
"Area":"",
"SubArea":""
}
for i, v in enumerate(reader):
child = get_child()
child["Area"] = v["Area"]
child["SubArea"] = v["SubArea"]
data[v["Device"]]= child
system.tag.writeBlocking(["[%s_SCADA_TAG_PROVIDER]Configuration/PLC"%whid], system.util.jsonEncode(data))
return "Success"
def add_detailed_view_btn_code(whid, event):
reader = csv.DictReader(StringIO(FileHandler.uploader.check_csv_file(event)))
data ={}
def convert_dict_value_to_list(string):
device_list = []
for i in string.replace("#", ",").split(","):
device_list.append(i.strip())
return device_list
for v in reader:
data[v["DetailedView"]]= convert_dict_value_to_list(v["Devices"])
system.tag.writeBlocking(["[%s_SCADA_TAG_PROVIDER]Configuration/DetailedViews"%whid], system.util.jsonEncode(data))
return "Success"