Skip to content

Instantly share code, notes, and snippets.

@syb0rg

syb0rg/setup.py Secret

Created July 5, 2016 15:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save syb0rg/59ede2c221b698b0abc1ebeb8af45079 to your computer and use it in GitHub Desktop.
Save syb0rg/59ede2c221b698b0abc1ebeb8af45079 to your computer and use it in GitHub Desktop.
import xml.dom.minidom as minidom
from xml.etree import ElementTree as etree
def strip(elem):
for elem in elem.getiterator():
if(elem.text):
elem.text = elem.text.strip()
if(elem.tail):
elem.tail = elem.tail.strip()
def removeBranch(tree, name):
root = tree.getroot()
parent_map = dict((c, p) for p in tree.getiterator() for c in p)
for item in list(root.getiterator(name)):
parent_map[item].remove(item)
def addLocalDataBranch(tree, num):
parent = tree.find('.//LocalDataValues')
parent.set('Count', str(num))
for val in xrange(1, num+1):
item = etree.SubElement(parent, 'Ldv')
name = etree.SubElement(item, 'Name')
name.text = 'Osiris_Local_Data_' + str(val)
type = etree.SubElement(item, 'DataType')
type.text = 'realQTimetagExtended'
source = etree.SubElement(item, 'NormalSource')
source.text = 'Telemetered'
def addServerDataBranch(tree, num):
parent = tree.find('.//ServerDataValues')
parent.set('Count', str(num))
for val in xrange(1, num+1):
item = etree.SubElement(parent, 'Sdv')
name = etree.SubElement(item, 'ObjName')
name.set('Scope', 'ICC')
name.text = 'Osiris_Local_Data_' + str(val)
type = etree.SubElement(item, 'DataType')
type.text = 'realQTimetagExtended'
source = etree.SubElement(item, 'ReadOnly')
source.text = 'Y'
def addClientDataBranch(tree, num):
parent = tree.find('.//ClientDataValues')
parent.set('Count', str(num))
for val in xrange(1, num+1):
item = etree.SubElement(parent, 'Cdv')
name = etree.SubElement(item, 'ObjName')
name.set('Scope', 'ICC')
name.text = 'Osiris_Test_Data_' + str(val)
type = etree.SubElement(item, 'DataType')
type.text = 'realQTimetagExtended'
source = etree.SubElement(item, 'ReadOnly')
source.text = 'Y'
def addDataSetBranch(tree, num):
root = tree.getroot()
parent = root.find('RemoteControlCenters').find('RemoteControlCenter').find('ClientObjects').find('ClientDataSets').find('Cds')
for thing in parent:
print thing.tag
print tree.findall('.//CdsVars')
parent.set('Count', str(num))
for val in xrange(1, num+1):
item = etree.SubElement(parent, 'CdsVar')
item.set('Name', 'Osiris_Test_Data_' + str(val))
item.set('Scope', 'ICC')
item.set('Type', 'Dv')
if __name__ == '__main__':
import sys
if len(sys.argv[1:]) != 3:
print('Usage: python setup.py [xml] [points] [time]')
sys.exit(1)
tree = etree.parse(sys.argv[1])
removeBranch(tree, 'Ldv')
removeBranch(tree, 'Sdv')
removeBranch(tree, 'Cdv')
removeBranch(tree, 'CdsVars')
addLocalDataBranch(tree, int(sys.argv[2]))
addServerDataBranch(tree, int(sys.argv[2]))
addClientDataBranch(tree, int(sys.argv[2]))
addDataSetBranch(tree, int(sys.argv[2]))
strip(tree.getroot())
#print minidom.parseString(etree.tostring(tree.getroot(), 'utf-8')).toprettyxml()
#file = open(sys.argv[1], 'wb')
#file.write(minidom.parseString(etree.tostring(tree.getroot(), 'utf-8')).toprettyxml())
#file.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment