From ebc023764eb136b5284a0063a415208dbcd55300 Mon Sep 17 00:00:00 2001 From: Trygve Date: Thu, 17 Feb 2022 21:17:14 +0100 Subject: [PATCH] La til strekktider i eksporten og fiksa kodesjekken --- cli.py | 6 +---- otime.py | 67 ++++++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 52 insertions(+), 21 deletions(-) diff --git a/cli.py b/cli.py index 9db87d7..ddb18a6 100644 --- a/cli.py +++ b/cli.py @@ -71,8 +71,4 @@ if __name__ == "__main__": #print_o_classes(o_classes) #print_class_splits(runner_list, o_classes[0]) #print(otime.check_codes(runner_list[1])) - #otime.gen_xml_result(runner_list, o_classes) - - testco = [51,52,53,31,32,23,33,34,35,55,56] - testrunner = [31,32,33,34,35] - print(otime.contains(testrunner, testco)) + otime.gen_xml_result(runner_list, o_classes) diff --git a/otime.py b/otime.py index f76d043..d158041 100644 --- a/otime.py +++ b/otime.py @@ -1,6 +1,5 @@ import datetime import csv -import sqlite3 import re from rich.console import Console from rich.table import Table @@ -40,8 +39,20 @@ class runner: c_ranked = rank_runners(allrunners, self.o_class) return c_ranked.index(self) + 1 def res_splits(self): - pass - + control_map = self.check_codes() + splits = [] + lastn = 0 + for n in control_map: + if n != lastn+1: + splits.append(self.splits[n]) + else: + # Dette må testes ordentlig seinere! + gap = n - lastn + split = 0 + for i in range(gap): + split += self.splits[n-gap] + splits.append(split) + return splits class course: def __init__(self, name, codes): self.name = name @@ -182,18 +193,26 @@ def ttime_mtr_to_class(csv_file, runnerarray): runner.s_time = s_time def contains(small, big): - for i in range(len(big)-len(small)+1): - for j in range(len(small)): - if big[i+j] != small[j]: + valid = True + mark = 0 + map_bl = [] + for i in small: + for n,control in enumerate(big[mark:]): + if i == control: + mark += n + map_bl.append(mark) break else: - return i, i+len(small) - return True - return False - + valid = False + if valid: + return map_bl + else: + return False + def get_runners_in_class(runners, o_class): list_filtrd = [] for i in runners: + marker = 0 if i.o_class == o_class: list_filtrd.append(i) @@ -211,6 +230,8 @@ def gen_xml_result(runners, o_classes): root = ET.Element('ResultList') tree = ET.ElementTree(root) event = ET.SubElement(root, 'Event') + ename = ET.SubElement(event, 'Name') + ename.text = 'PLACEHOLDER' for i in o_classes: # class_result = ET.SubElement(root, 'ClassResult') @@ -247,7 +268,7 @@ def gen_xml_result(runners, o_classes): country.set('code', 'NOR') # # - result = ET.SubElement(person, 'Result') + result = ET.SubElement(person_result, 'Result') if len(n.splits) > 2: start_t = ET.SubElement(result, 'StartTime') start_t.text = n.s_time.isoformat() @@ -260,13 +281,27 @@ def gen_xml_result(runners, o_classes): totime = ET.SubElement(result, 'TimeBehind') totime.text = str(n.totaltime() - runners_ranked[0].totaltime()) # - rank = ET.SubElement(result, 'Rank') - rank.text = str(n.rank(runners)) - status = ET.SubElement(result, 'Status') - status.text = n.status() + pos = ET.SubElement(result, 'Position') + pos.text = str(n.rank(runners)) + status = ET.SubElement(result, 'Status') + status.text = n.status() + # + for code,split in zip(n.o_class.course.codes, n.res_splits()): + st = ET.SubElement(result, 'SplitTime') + ck = ET.SubElement(st, 'ControlCode') + ck.text = str(code) + time = ET.SubElement(st, 'Time') + time.text = str(split) + # + else: + status = ET.SubElement(result, 'Status') + status.text = n.status() + else: + status = ET.SubElement(result, 'Status') + status.text = n.status() # # # - tree.write('output.xml') + tree.write('Resultater.xml') return ET.dump(root)