From 7a598f65372b1b694d222946fd6269033bde0e54 Mon Sep 17 00:00:00 2001 From: emkael Date: Mon, 30 Dec 2019 12:49:54 +0100 Subject: New package structure for result info classes --- jfr_playoff/data/tournament/__init__.py | 58 +++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 jfr_playoff/data/tournament/__init__.py (limited to 'jfr_playoff/data/tournament/__init__.py') diff --git a/jfr_playoff/data/tournament/__init__.py b/jfr_playoff/data/tournament/__init__.py new file mode 100644 index 0000000..e86d294 --- /dev/null +++ b/jfr_playoff/data/tournament/__init__.py @@ -0,0 +1,58 @@ +from jfr_playoff.logger import PlayoffLogger +from jfr_playoff.data.info import ResultInfo + + +class TournamentInfoClient(object): + def __init__(self, settings, database=None): + self.settings = settings + self.database = database + + def get_results_link(self, suffix): + pass + + def is_finished(self): + pass + + def get_tournament_results(self): + pass + + def get_exceptions(self, method): + pass + + +class TournamentInfo(ResultInfo): + def __init__(self, settings, database): + self.settings = settings + ResultInfo.__init__(self, settings, database) + + def fill_client_list(self, settings, database): + clients = [] + from jfr_playoff.data.tournament.jfrdb import JFRDbTournamentInfo + from jfr_playoff.data.tournament.jfrhtml import JFRHtmlTournamentInfo + from jfr_playoff.data.tournament.tcjson import TCJsonTournamentInfo + if (database is not None) and ('database' in settings): + clients.append(JFRDbTournamentInfo(settings, database)) + if 'link' in settings: + if settings['link'].endswith('leaderb.html'): + clients.append(JFRHtmlTournamentInfo(settings)) + clients.append(TCJsonTournamentInfo(settings)) + return clients + + def get_tournament_results(self): + teams = self.call_client('get_tournament_results', []) + if self.is_finished(): + final_positions = self.settings.get('final_positions', []) + PlayoffLogger.get('tournamentinfo').info( + 'setting final positions from tournament results: %s', + final_positions) + for position in final_positions: + if len(teams) >= position: + teams[position-1] = (teams[position-1] + [None] * 4)[0:4] + teams[position-1][3] = position + return teams + + def is_finished(self): + return self.call_client('is_finished', True) + + def get_results_link(self, suffix='leaderb.html'): + return self.call_client('get_results_link', None, suffix) -- cgit v1.2.3