summaryrefslogtreecommitdiff
path: root/ilpscheduling/convert.py
blob: f95dabf9a37e0c1bdae1577c8f8d4da7b10267c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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)