From 93e5bac872f3b4729ad36bea358cbbd5b0829c11 Mon Sep 17 00:00:00 2001 From: emkael Date: Wed, 20 Feb 2019 21:13:21 +0100 Subject: Allowing to specify selected team in config before the match is published, without changing the bracket connections --- jfr_playoff/dto.py | 1 + jfr_playoff/generator.py | 42 ++++++++++++++++++++++++++---------------- jfr_playoff/matchinfo.py | 1 + 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/jfr_playoff/dto.py b/jfr_playoff/dto.py index 8c04901..169eda0 100644 --- a/jfr_playoff/dto.py +++ b/jfr_playoff/dto.py @@ -13,6 +13,7 @@ class Team(object): score = 0.0 place = None known_teams = 0 + selected_team = -1 def __init__(self): self.place = [] diff --git a/jfr_playoff/generator.py b/jfr_playoff/generator.py index b151af1..ca1905d 100644 --- a/jfr_playoff/generator.py +++ b/jfr_playoff/generator.py @@ -124,6 +124,11 @@ class PlayoffGenerator(object): # count how many teams are eligible (how many non-predicted teams are there) known_teams = len(is_label_predicted) - sum(is_label_predicted) PlayoffLogger.get('generator').info('detected %d known team(s), predicted mask: %s', known_teams, is_label_predicted) + # the team's already selected, cut the label list to single entry + if team.selected_team > -1: + PlayoffLogger.get('generator').info('pre-selected team #%d, label: %s', team.selected_team, labels[team.selected_team]) + labels = [labels[team.selected_team]] + is_label_predicted = [False] if self.team_box_settings.get('sort_eligible_first', True): # sort labels to move eligible teams in front of predicted teams labels = [label for i, label in enumerate(labels) if not is_label_predicted[i]] \ @@ -147,24 +152,29 @@ class PlayoffGenerator(object): team_label.append(self.__get_team_label( labels[l], 'MATCH_PREDICTED_TEAM_LABEL' if is_label_predicted[l] else 'MATCH_TEAM_LABEL')) - # team names for tooltip - for name in team.name: - if name: - # every non-empty name gets some indentation - team_name.append(name_prefix + name) - if self.team_box_settings.get('predict_teams', False): - # remember where the list of eligible teams ends - known_teams = len(team_name) - for name in team.possible_name: - # append predicted team names, with indentation as well + # the team's already selected, cut the tooltip list to single entry + if team.selected_team > -1: + PlayoffLogger.get('generator').info('pre-selected team #%d, name: %s', team.selected_team, team.name[team.selected_team]) + team_name = [team.name[team.selected_team]] + else: + # team names for tooltip + for name in team.name: if name: + # every non-empty name gets some indentation team_name.append(name_prefix + name) - if len(team_name) != known_teams: - # we've added some predicted team names, so we add a header - team_name.insert(known_teams, self.p_temp.get('MATCH_POSSIBLE_TEAM_LIST_HEADER')) - if (len(team_label) > 1) and (match.running == 0) and (known_teams > 0): - # and we add a header for matches that haven't started yet and have multiple options for teams - team_name.insert(0, self.p_temp.get('MATCH_TEAM_LIST_HEADER')) + if self.team_box_settings.get('predict_teams', False): + # remember where the list of eligible teams ends + known_teams = len(team_name) + for name in team.possible_name: + # append predicted team names, with indentation as well + if name: + team_name.append(name_prefix + name) + if len(team_name) > known_teams: + # we've added some predicted team names, so we add a header + team_name.insert(known_teams, self.p_temp.get('MATCH_POSSIBLE_TEAM_LIST_HEADER')) + if (len(team_label) > 1) and (match.running == 0) and (known_teams > 0): + # and we add a header for matches that haven't started yet and have multiple options for teams + team_name.insert(0, self.p_temp.get('MATCH_TEAM_LIST_HEADER')) # glue it all together team_label = label_separator.join(team_label) PlayoffLogger.get('generator').info('output teams label HTML: %s', team_label) diff --git a/jfr_playoff/matchinfo.py b/jfr_playoff/matchinfo.py index 7b7af0b..b1fae4f 100644 --- a/jfr_playoff/matchinfo.py +++ b/jfr_playoff/matchinfo.py @@ -189,6 +189,7 @@ class MatchInfo: teams[i].name = match_teams teams[i].possible_name = possible_teams teams[i].known_teams = len([team for team in match_teams if team is not None]) + teams[i].selected_team = self.config['selected_teams'][i] if 'selected_teams' in self.config else -1 PlayoffLogger.get('matchinfo').info( 'config scores for match #%d: %s', self.info.id, teams) -- cgit v1.2.3