47 lines
1.8 KiB
Python

import xml.etree.ElementTree
def get_text_or_default(parent_node: xml.etree.ElementTree.Element, node_names, default_value):
if not isinstance(node_names, list):
node_names = [node_names]
node = parent_node
for n in node_names:
node = node.find(n)
if node is None:
return default_value
return node.text
def parse_mos_xml(mosElem: xml.etree.ElementTree.Element) -> bool:
mosId = mosElem.find("mosID").text
mosObj = mosElem.find("mosObj")
objId = mosObj.find("objID").text
status = mosObj.find("status").text
if status == "DELETED":
objData = {
"mosId": mosId,
"objId": objId,
"isDeleted": 1
}
return objData
objData = {
"mosId": mosId,
"objId": objId,
"status": status,
"isDeleted": 0,
"objSlug": get_text_or_default(mosObj, "objSlug", ""),
"objPath": get_text_or_default(mosObj, ["objPaths", "objPath"], ""),
"objProxyPath": get_text_or_default(mosObj, ["objPaths", "objProxyPath"], ""),
"objGroup": get_text_or_default(mosObj, "objGroup", ""),
"objAir": get_text_or_default(mosObj, "objAir", ""),
"created": get_text_or_default(mosObj, "created", ""),
"createdBy": get_text_or_default(mosObj, "createdBy", ""),
"changed": get_text_or_default(mosObj, "changed", ""),
"changedBy": get_text_or_default(mosObj, "changedBy", ""),
"description": get_text_or_default(mosObj, "description", ""),
"objDur": get_text_or_default(mosObj, "objDur", "0"),
"planningId": get_text_or_default(mosObj, ["mosExternalMetadata", "mosPayload", "planningID"], "")
}
#print(repr(objData))
return objData