From 178f0bcbd7590c480d578ba695008d2de6fb9dfe Mon Sep 17 00:00:00 2001 From: Trygve Date: Thu, 10 Feb 2022 20:42:01 +0100 Subject: [PATCH] =?UTF-8?q?Startet=20p=C3=A5=20xml=20eksport=20funksjonen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cli.py | 3 ++- otime.py | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 66 insertions(+), 2 deletions(-) diff --git a/cli.py b/cli.py index 6121e8c..152f698 100644 --- a/cli.py +++ b/cli.py @@ -69,5 +69,6 @@ if __name__ == "__main__": print_runners(runner_list) #print_time(runner_list) #print_o_classes(o_classes) - print_class_splits(runner_list, o_classes[0]) + #print_class_splits(runner_list, o_classes[0]) #print(otime.check_codes(runner_list[1])) + print(otime.gen_xml_result(runner_list, o_classes)) diff --git a/otime.py b/otime.py index 1e1e23c..19e0792 100644 --- a/otime.py +++ b/otime.py @@ -20,11 +20,20 @@ class runner: def fullname(self): return '{} {}'.format(self.first, self.last) - # Returns False if not ok and touple if ok def check_codes(self): + # Returns False if not ok and touple if ok return contains(self.o_class.course.codes, self.controls) def totaltime(self): return self.splits[-2] + + def status(self): + if self.controls == []: + return 'Active' + elif self.check_codes(): + return 'OK' + elif self.check_codes() == False: + return 'Disqualified' + class course: def __init__(self, name, codes): @@ -161,4 +170,58 @@ def contains(small, big): return True return False +def filter_runners_by_class(runners, o_class): + list_filtrd = [] + for i in runners: + if i.o_class == o_class: + list_filtrd.append(i) + return list_filtrd + +def gen_xml_result(runners, o_classes): + root = ET.Element('ResultList') + tree = ET.ElementTree(root) + event = ET.SubElement(root, 'Event') + for i in o_classes: + # + class_result = ET.SubElement(event, 'ClassResult') + # + t = ET.SubElement(class_result, 'Class') + name = ET.SubElement(t, 'Name') + name.text = i.name + # + for n in filter_runners_by_class(runners, i): + person_result = ET.SubElement(class_result, 'PersonResult') + # + person = ET.SubElement(person_result, 'Person') + eventorid = ET.SubElement(person, 'Id') + eventorid.text = '0' + # + name = ET.SubElement(person, 'Name') + family = ET.SubElement(name, 'Family') + family.text = n.last + given = ET.SubElement(name, 'Given') + given.text = n.first + # + # + # + org = ET.SubElement(person_result, 'Organisation') + orgid = ET.SubElement(org, 'Id') + orgid.text = '0' + name = ET.SubElement(org, 'Name') + name.text = n.club + country = ET.SubElement(org, 'Country') + # TODO: hent land fra løperobjektet + country.text = 'Norway' + country.set('code', 'NOR') + # + # + result = ET.SubElement(person, 'Result') + status = ET.SubElement(result, 'Status') + status.text = n.status() + # + # + # + + tree.write('output.xml') + return ET.dump(root)