summaryrefslogtreecommitdiff
path: root/ilpscheduling/convert.py
diff options
context:
space:
mode:
Diffstat (limited to 'ilpscheduling/convert.py')
-rw-r--r--ilpscheduling/convert.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/ilpscheduling/convert.py b/ilpscheduling/convert.py
new file mode 100644
index 0000000..f95dabf
--- /dev/null
+++ b/ilpscheduling/convert.py
@@ -0,0 +1,32 @@
+# 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)
+
+