# vim: set fileencoding=utf-8 : import sys, yaml from lxml import etree from lxml import objectify def mainImportEkvv (args): """ Parse ekvv participant management lists XXX: priorities are not properly imported yet and need to be “normalized” See http://ekvv.uni-bielefeld.de/wiki/en/Export_von_Anmeldelisten_für_Platzvergabeverfahren_im_XML_Format """ worker = {} limit = {} for f in args.files: with open (f, 'r') as fd: tree = objectify.parse (fd) root = tree.getroot () slotid = root.get ('id') workerlist = root.teilnehmerliste limit[slotid] = int (workerlist.get ('teilnehmerbegrenzung')) for t in workerlist.teilnehmer: wid = t.get ('matrikelnummer') worker.setdefault (wid, {}) worker[wid][slotid] = int (t.get ('prioritaet')) yaml.dump ({'worker': worker, 'slots': limit, 'env': {'minSlots': len (limit), 'maxSlots': len (limit)}}, sys.stdout)