Merge HTML final status into main data structures
This commit is contained in:
parent
867b18576f
commit
ea6009bb0a
@ -9,6 +9,9 @@ class HtmlParticipant:
|
|||||||
self.place = place
|
self.place = place
|
||||||
self.finalist = finalist
|
self.finalist = finalist
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f'{self.name} (with place {self.place})'
|
||||||
|
|
||||||
class HtmlImport:
|
class HtmlImport:
|
||||||
def __init__(self, title: str, participants: dict[int, HtmlParticipant]):
|
def __init__(self, title: str, participants: dict[int, HtmlParticipant]):
|
||||||
self.title = title
|
self.title = title
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from solo_turnier import worker
|
from solo_turnier import worker, html_parser
|
||||||
import os
|
import os
|
||||||
import json
|
import json
|
||||||
import pytest
|
import pytest
|
||||||
@ -216,3 +216,97 @@ def test_createHtmlLUT(mocker):
|
|||||||
('group3', 'class3', 'dance3'): importMock3,
|
('group3', 'class3', 'dance3'): importMock3,
|
||||||
}
|
}
|
||||||
assert expected == structure
|
assert expected == structure
|
||||||
|
|
||||||
|
def test_mergeHtmlData(mocker):
|
||||||
|
person1 = worker.ResultPerson('Max 1', 'Mustermann', 'TSC Entenhausen')
|
||||||
|
person2 = worker.ResultPerson('Max 2', 'Mustermann', 'TSC Entenhausen')
|
||||||
|
person3 = worker.ResultPerson('Max 3', 'Mustermann', 'TSC Entenhausen')
|
||||||
|
person4 = worker.ResultPerson('Max 4', 'Mustermann', 'TSC Entenhausen')
|
||||||
|
|
||||||
|
data = {
|
||||||
|
person1: [
|
||||||
|
worker.CompetitionResult('Rumba', 'Kin.', 'Beg.', '1', '1', 1, 'Kin./Jun.', 'Beg.'),
|
||||||
|
worker.CompetitionResult('Cha Cha', 'Kin.', 'Adv.', '1', '1', 1, 'Kin.', 'Adv.'),
|
||||||
|
worker.CompetitionResult('Jive', 'Kin.', 'Beg.', '1', '2', 1, 'Kin.', 'Beg.'),
|
||||||
|
worker.CompetitionResult('Langs. Walzer', 'Kin.', 'Beg.', '1', '1', 1, 'Kin.', 'Newc./Beg.'),
|
||||||
|
],
|
||||||
|
person2: [
|
||||||
|
worker.CompetitionResult('Rumba', 'Kin.', 'Beg.', '2', '2', 2, 'Kin./Jun.', 'Beg.'),
|
||||||
|
worker.CompetitionResult('Cha Cha', 'Kin.', 'Adv.', '2', '2', 2, 'Kin.', 'Adv.'),
|
||||||
|
worker.CompetitionResult('Jive', 'Kin.', 'Beg.', '1', '2', 2, 'Kin.', 'Beg.'),
|
||||||
|
worker.CompetitionResult('Langs. Walzer', 'Kin.', 'Newc.', '1', '1', 2, 'Kin.', 'Newc./Beg.'),
|
||||||
|
],
|
||||||
|
person3: [
|
||||||
|
worker.CompetitionResult('Rumba', 'Jun.', 'Beg.', '1', '1', 3, 'Kin./Jun.', 'Beg.'),
|
||||||
|
# worker.CompetitionResult('Cha Cha', 'Jun.', 'Adv.', '1', '1', 3, 'Kin.', 'Adv.'),
|
||||||
|
# worker.CompetitionResult('Jive', 'Jun.', 'Beg.', '2', '2', 3, 'Kin.', 'Beg.'),
|
||||||
|
# worker.CompetitionResult('Langs. Walzer', 'Jun.', 'Newc./Beg.', '1', '1', 3, 'Kin.', 'Beg.'),
|
||||||
|
],
|
||||||
|
person4: [
|
||||||
|
worker.CompetitionResult('Rumba', 'Kin.', 'Beg.', '3', '3', 4, 'Kin./Jun.', 'Beg.'),
|
||||||
|
# worker.CompetitionResult('Cha Cha', 'Kin.', 'Adv.', '1', '1', 4, 'Kin.', 'Adv.'),
|
||||||
|
# worker.CompetitionResult('Jive', 'Kin.', 'Beg.', '2', '2', 4, 'Kin.', 'Beg.'),
|
||||||
|
# worker.CompetitionResult('Langs. Walzer', 'Kin.', 'Newc./Beg.', '1', '1', 4, 'Kin.', 'Beg.'),
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
htmlParticipant1Dance1 = html_parser.HtmlParticipant('Max 1 Mustermann', '1.', True)
|
||||||
|
htmlParticipant1Dance2 = html_parser.HtmlParticipant('Max 1 Mustermann', '1.', True)
|
||||||
|
htmlParticipant1Dance3 = html_parser.HtmlParticipant('Max 1 Mustermann', '1.-2.', True)
|
||||||
|
htmlParticipant1Dance4 = html_parser.HtmlParticipant('Max 1 Mustermann', '1.', True)
|
||||||
|
|
||||||
|
htmlParticipant2Dance1 = html_parser.HtmlParticipant('Max 2 Mustermann', '2.', True)
|
||||||
|
htmlParticipant2Dance2 = html_parser.HtmlParticipant('Max 2 Mustermann', '2.', True)
|
||||||
|
htmlParticipant2Dance3 = html_parser.HtmlParticipant('Max 2 Mustermann', '1.-2.', True)
|
||||||
|
htmlParticipant2Dance4 = html_parser.HtmlParticipant('Max 2 Mustermann', '1.', True)
|
||||||
|
|
||||||
|
htmlParticipant3Dance1 = html_parser.HtmlParticipant('Max 3 Mustermann', '1.', True)
|
||||||
|
|
||||||
|
htmlParticipant4Dance1 = html_parser.HtmlParticipant('Max 4 Mustermann', '3.', False)
|
||||||
|
|
||||||
|
htmlParticipantsDance1 = {
|
||||||
|
'1': htmlParticipant1Dance1,
|
||||||
|
'2': htmlParticipant2Dance1,
|
||||||
|
'3': htmlParticipant3Dance1,
|
||||||
|
'4': htmlParticipant4Dance1
|
||||||
|
}
|
||||||
|
htmlParticipantsDance2 = {
|
||||||
|
'1': htmlParticipant1Dance2,
|
||||||
|
'2': htmlParticipant2Dance2,
|
||||||
|
}
|
||||||
|
htmlParticipantsDance3 = {
|
||||||
|
'1': htmlParticipant1Dance3,
|
||||||
|
'2': htmlParticipant2Dance3,
|
||||||
|
}
|
||||||
|
htmlParticipantsDance4 = {
|
||||||
|
'1': htmlParticipant1Dance4,
|
||||||
|
'2': htmlParticipant2Dance4,
|
||||||
|
}
|
||||||
|
|
||||||
|
htmlCompetition1 = html_parser.HtmlImport('ETW, Solos Kin./Jun. Beginner Rumba', htmlParticipantsDance1)
|
||||||
|
htmlCompetition2 = html_parser.HtmlImport('ETW, Solos Kin. Advanced Cha Cha', htmlParticipantsDance2)
|
||||||
|
htmlCompetition3 = html_parser.HtmlImport('ETW, Solos Kinder Beginner Jive', htmlParticipantsDance3)
|
||||||
|
htmlCompetition4 = html_parser.HtmlImport('ETW, Solos Kin. Newc./Beg. Langs. Walzer', htmlParticipantsDance4)
|
||||||
|
|
||||||
|
dataWorker = worker.DataWorker()
|
||||||
|
|
||||||
|
dataWorker.mergeHtmlData(data, [htmlCompetition1, htmlCompetition2, htmlCompetition3, htmlCompetition4])
|
||||||
|
|
||||||
|
person1Finalist = [c.finalist for c in data[person1]]
|
||||||
|
person2Finalist = [c.finalist for c in data[person2]]
|
||||||
|
person3Finalist = [c.finalist for c in data[person3]]
|
||||||
|
person4Finalist = [c.finalist for c in data[person4]]
|
||||||
|
finalists = {
|
||||||
|
person1: person1Finalist,
|
||||||
|
person2: person2Finalist,
|
||||||
|
person3: person3Finalist,
|
||||||
|
person4: person4Finalist,
|
||||||
|
}
|
||||||
|
expectedFinalists = {
|
||||||
|
person1: [True, True, True, True],
|
||||||
|
person2: [True, True, True, True],
|
||||||
|
person3: [True],
|
||||||
|
person4: [False],
|
||||||
|
}
|
||||||
|
|
||||||
|
assert finalists == expectedFinalists
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from solo_turnier import html_parser
|
from solo_turnier import html_parser
|
||||||
|
|
||||||
class ResultRow:
|
class ResultRow:
|
||||||
def __init__(self, firstName, lastName, club, id, group, class_, dance, place, placeTo, competitionGroup, competitionClass):
|
def __init__(self, firstName, lastName, club, id, group, class_, dance, place, placeTo, competitionGroup, competitionClass):
|
||||||
self.firstName = firstName
|
self.firstName = firstName
|
||||||
@ -207,3 +208,14 @@ class DataWorker:
|
|||||||
ret[key] = imp
|
ret[key] = imp
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
def mergeHtmlData(self, data:dict[ResultPerson, list[CompetitionResult]], htmlImports: list[html_parser.HtmlImport]):
|
||||||
|
lut = self._createHtmlLUT(htmlImports)
|
||||||
|
|
||||||
|
for person in data:
|
||||||
|
for competition in data[person]:
|
||||||
|
key = (competition.competitionGroup, competition.competitionClass, competition.dance)
|
||||||
|
htmlImport = lut[key]
|
||||||
|
participant = htmlImport.participants[str(competition.id)]
|
||||||
|
if participant.name != person.name:
|
||||||
|
self.l.error(f'Names for {person} and participant in HTML import ({participant}) do not match. Please check carefully.')
|
||||||
|
competition.finalist = participant.finalist
|
||||||
|
Loading…
Reference in New Issue
Block a user