Fiksa iof xml import
This commit is contained in:
parent
7591523b37
commit
de4f288a4a
@ -1,5 +1,6 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import xml.etree.ElementTree as ET
|
import xml.etree.ElementTree as ET
|
||||||
|
import otime
|
||||||
|
|
||||||
def xml_child(parent, tag, content):
|
def xml_child(parent, tag, content):
|
||||||
# Used to make creating xml files easier
|
# Used to make creating xml files easier
|
||||||
@ -120,8 +121,8 @@ def runners_from_xml_entries(xml_file):
|
|||||||
card = None
|
card = None
|
||||||
|
|
||||||
start_time = None
|
start_time = None
|
||||||
runners.append(Runner(rid, first, last, club=club_name, club_id=club_id,
|
runners.append(otime.Runner(rid, first, last, club=club_name, club_id=club_id,
|
||||||
country=country,card=card, o_class_str=class_str,
|
country=country,card_id=card, o_class_str=class_str,
|
||||||
start_time=start_time, fee_id=fee_id))
|
start_time=start_time, fee_id=fee_id))
|
||||||
return runners
|
return runners
|
||||||
|
|
||||||
@ -151,7 +152,7 @@ def fees_from_xml_entries(xml_file):
|
|||||||
except AttributeError:
|
except AttributeError:
|
||||||
to_birth_date = None
|
to_birth_date = None
|
||||||
|
|
||||||
fee_objs.append(Fee(fee_id, name, currency, amount,
|
fee_objs.append(otime.Fee(fee_id, name, currency, amount,
|
||||||
from_birth_date=from_birth_date, to_birth_date=to_birth_date))
|
from_birth_date=from_birth_date, to_birth_date=to_birth_date))
|
||||||
return fee_objs
|
return fee_objs
|
||||||
|
|
||||||
@ -171,5 +172,36 @@ def courses_from_xml(xml_file):
|
|||||||
controls.remove('STA1')
|
controls.remove('STA1')
|
||||||
controls.remove('FIN1')
|
controls.remove('FIN1')
|
||||||
controls = [int(l) for l in controls]
|
controls = [int(l) for l in controls]
|
||||||
courseobjs.append(Course(name, controls))
|
courseobjs.append(otime.Course(name, controls))
|
||||||
return courseobjs
|
return courseobjs
|
||||||
|
|
||||||
|
def event_from_xml_entries(xml_file):
|
||||||
|
tree = ET.parse(xml_file)
|
||||||
|
root = tree.getroot()
|
||||||
|
|
||||||
|
url = '{http://www.orienteering.org/datastandard/3.0}'
|
||||||
|
event_el = root.find(f'./{url}Event')
|
||||||
|
event_id = int(event_el.find(f'./{url}Id').text)
|
||||||
|
name = event_el.find(f'./{url}Name').text
|
||||||
|
organiser = event_el.find(f'./{url}Organiser/{url}Name').text
|
||||||
|
|
||||||
|
start_ds = event_el.find(f'./{url}StartTime/{url}Date').text
|
||||||
|
start_ts = event_el.find(f'./{url}StartTime/{url}Time').text[:-1]
|
||||||
|
start_time = datetime.datetime.fromisoformat(f'{start_ds}T{start_ts}')
|
||||||
|
|
||||||
|
end_ds = event_el.find(f'./{url}EndTime/{url}Date').text
|
||||||
|
end_ts = event_el.find(f'./{url}EndTime/{url}Time').text[:-1]
|
||||||
|
end_time = datetime.datetime.fromisoformat(f'{end_ds}T{end_ts}')
|
||||||
|
|
||||||
|
person_entries = root.findall(f'./{url}PersonEntry')
|
||||||
|
|
||||||
|
class_names = []
|
||||||
|
for p_entry in person_entries:
|
||||||
|
class_names.append(p_entry.find(f'./{url}Class/{url}Name').text)
|
||||||
|
o_classes = [otime.OClass(i, []) for i in set(class_names)]
|
||||||
|
|
||||||
|
runners = runners_from_xml_entries(xml_file)
|
||||||
|
fees = fees_from_xml_entries(xml_file)
|
||||||
|
|
||||||
|
return otime.Event(event_id, name, organiser=organiser, runners=runners,
|
||||||
|
fees=fees, start_time=start_time, end_time=end_time, o_classes=o_classes)
|
@ -7,7 +7,7 @@ import pdf
|
|||||||
class Runner:
|
class Runner:
|
||||||
def __init__(self, id: int, first: str, last: str, club=None, club_id=None,
|
def __init__(self, id: int, first: str, last: str, club=None, club_id=None,
|
||||||
country=None, card_id=None, o_class_str=None, o_class=None,
|
country=None, card_id=None, o_class_str=None, o_class=None,
|
||||||
fork=0, start_time=None, fee_id=None, fee=None):
|
fork=0, start_time=None, fee_id=None, fee=None, status_override=''):
|
||||||
self.id = id
|
self.id = id
|
||||||
self.first = first
|
self.first = first
|
||||||
self.last = last
|
self.last = last
|
||||||
@ -19,7 +19,7 @@ class Runner:
|
|||||||
self.fork = fork
|
self.fork = fork
|
||||||
self.start_time = start_time
|
self.start_time = start_time
|
||||||
self.fee_id = fee_id
|
self.fee_id = fee_id
|
||||||
self.status_override = ''
|
self.status_override = status_override
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return(f'name({self.fullname()})')
|
return(f'name({self.fullname()})')
|
||||||
@ -337,29 +337,6 @@ class Event:
|
|||||||
self.add_fees(*fees_from_xml_entries(xml_file))
|
self.add_fees(*fees_from_xml_entries(xml_file))
|
||||||
|
|
||||||
# Må endres
|
# Må endres
|
||||||
def from_xml_entries(xml_file):
|
|
||||||
tree = ET.parse(xml_file)
|
|
||||||
root = tree.getroot()
|
|
||||||
|
|
||||||
url = '{http://www.orienteering.org/datastandard/3.0}'
|
|
||||||
event_el = root.find(f'./{url}Event')
|
|
||||||
event_id = int(event_el.find(f'./{url}Id').text)
|
|
||||||
name = event_el.find(f'./{url}Name').text
|
|
||||||
organiser = event_el.find(f'./{url}Organiser/{url}Name').text
|
|
||||||
|
|
||||||
start_ds = event_el.find(f'./{url}StartTime/{url}Date').text
|
|
||||||
start_ts = event_el.find(f'./{url}StartTime/{url}Time').text[:-1]
|
|
||||||
start_time = datetime.datetime.fromisoformat(f'{start_ds}T{start_ts}')
|
|
||||||
|
|
||||||
end_ds = event_el.find(f'./{url}EndTime/{url}Date').text
|
|
||||||
end_ts = event_el.find(f'./{url}EndTime/{url}Time').text[:-1]
|
|
||||||
end_time = datetime.datetime.fromisoformat(f'{end_ds}T{end_ts}')
|
|
||||||
|
|
||||||
runners = runners_from_xml_entries(xml_file)
|
|
||||||
fees = fees_from_xml_entries(xml_file)
|
|
||||||
|
|
||||||
return Event(event_id, name, organiser=organiser, runners=runners,
|
|
||||||
fees=fees, start_time=start_time, end_time=end_time)
|
|
||||||
|
|
||||||
def read_xml_courses(self, xml_file):
|
def read_xml_courses(self, xml_file):
|
||||||
self.courses = courses_from_xml(xml_file)
|
self.courses = courses_from_xml(xml_file)
|
||||||
|
Loading…
Reference in New Issue
Block a user