def doOverallAwardInsights(self): """ Calculate award insights across all years. Returns a list of Insights. """ insights = [] year_regional_winners = Insight.query(Insight.name == Insight.INSIGHT_NAMES[Insight.REGIONAL_DISTRICT_WINNERS], Insight.year != 0).fetch(1000) regional_winners = defaultdict(int) for insight in year_regional_winners: for number, team_list in insight.data: for team in team_list: regional_winners[team] += number year_blue_banners = Insight.query(Insight.name == Insight.INSIGHT_NAMES[Insight.BLUE_BANNERS], Insight.year != 0).fetch(1000) blue_banners = defaultdict(int) for insight in year_blue_banners: for number, team_list in insight.data: for team in team_list: blue_banners[team] += number year_rca_winners = Insight.query(Insight.name == Insight.INSIGHT_NAMES[Insight.RCA_WINNERS], Insight.year != 0).fetch(1000) rca_winners = defaultdict(int) for insight in year_rca_winners: for team in insight.data: rca_winners[team] += 1 year_world_champions = Insight.query(Insight.name == Insight.INSIGHT_NAMES[Insight.WORLD_CHAMPIONS], Insight.year != 0).fetch(1000) world_champions = defaultdict(int) for insight in year_world_champions: for team in insight.data: world_champions[team] += 1 # Sorting regional_winners = self._sortTeamWinsDict(regional_winners) blue_banners = self._sortTeamWinsDict(blue_banners) rca_winners = self._sortTeamWinsDict(rca_winners) world_champions = self._sortTeamWinsDict(world_champions) # Creating Insights if regional_winners: insights.append(self._createInsight(regional_winners, Insight.INSIGHT_NAMES[Insight.REGIONAL_DISTRICT_WINNERS], 0)) if blue_banners: insights.append(self._createInsight(blue_banners, Insight.INSIGHT_NAMES[Insight.BLUE_BANNERS], 0)) if rca_winners: insights.append(self._createInsight(rca_winners, Insight.INSIGHT_NAMES[Insight.RCA_WINNERS], 0)) if world_champions: insights.append(self._createInsight(world_champions, Insight.INSIGHT_NAMES[Insight.WORLD_CHAMPIONS], 0)) return insights
def doOverallMatchInsights(self): """ Calculate match insights across all years. Returns a list of Insights. """ insights = [] year_num_matches = Insight.query(Insight.name == Insight.INSIGHT_NAMES[Insight.NUM_MATCHES], Insight.year != 0).fetch(1000) num_matches = [] for insight in year_num_matches: num_matches.append((insight.year, insight.data)) # Creating Insights if num_matches: insights.append(self._createInsight(num_matches, Insight.INSIGHT_NAMES[Insight.NUM_MATCHES], 0)) return insights
def doOverallMatchInsights(self): """ Calculate match insights across all years. Returns a list of Insights. """ insights = [] year_num_matches = Insight.query( Insight.name == Insight.INSIGHT_NAMES[Insight.NUM_MATCHES], Insight.year != 0).fetch(1000) num_matches = [] for insight in year_num_matches: num_matches.append((insight.year, insight.data)) # Creating Insights if num_matches: insights.append( self._createInsight(num_matches, Insight.INSIGHT_NAMES[Insight.NUM_MATCHES], 0)) return insights
def doOverallAwardInsights(self): """ Calculate award insights across all years. Returns a list of Insights. """ insights = [] year_regional_winners = Insight.query( Insight.name == Insight.INSIGHT_NAMES[ Insight.REGIONAL_DISTRICT_WINNERS], Insight.year != 0).fetch(1000) regional_winners = defaultdict(int) for insight in year_regional_winners: for number, team_list in insight.data: for team in team_list: regional_winners[team] += number year_blue_banners = Insight.query( Insight.name == Insight.INSIGHT_NAMES[Insight.BLUE_BANNERS], Insight.year != 0).fetch(1000) blue_banners = defaultdict(int) for insight in year_blue_banners: for number, team_list in insight.data: for team in team_list: blue_banners[team] += number year_rca_winners = Insight.query( Insight.name == Insight.INSIGHT_NAMES[Insight.RCA_WINNERS], Insight.year != 0).fetch(1000) rca_winners = defaultdict(int) for insight in year_rca_winners: for team in insight.data: rca_winners[team] += 1 year_world_champions = Insight.query( Insight.name == Insight.INSIGHT_NAMES[Insight.WORLD_CHAMPIONS], Insight.year != 0).fetch(1000) world_champions = defaultdict(list) for insight in year_world_champions: for team in insight.data: world_champions[team].append(insight.year) year_division_winners = Insight.query( Insight.name == Insight.INSIGHT_NAMES[Insight.DIVISION_WINNERS], Insight.year != 0).fetch(1000) division_winners = defaultdict(list) for insight in year_division_winners: for team in insight.data: division_winners[team].append(insight.year) year_successful_elim_teamups = Insight.query( Insight.name == Insight.INSIGHT_NAMES[ Insight.SUCCESSFUL_ELIM_TEAMUPS], Insight.year != 0).fetch(1000) successful_elim_teamups = defaultdict(int) for insight in year_successful_elim_teamups: for teams in insight.data: for pairs in itertools.combinations(teams, 2): successful_elim_teamups[tuple(sorted(pairs))] += 1 successful_elim_teamups_sorted = defaultdict(list) for teams, num_wins in successful_elim_teamups.items(): sorted_teams = sorted(teams, key=lambda team_key: int(team_key[3:])) successful_elim_teamups_sorted[num_wins].append(sorted_teams) successful_elim_teamups_sorted = sorted( successful_elim_teamups_sorted.items(), key=lambda x: -x[0]) # Sorting regional_winners = self._sortTeamWinsDict(regional_winners) blue_banners = self._sortTeamWinsDict(blue_banners) rca_winners = self._sortTeamWinsDict(rca_winners) world_champions = self._sortTeamYearWinsDict(world_champions) division_winners = self._sortTeamYearWinsDict(division_winners) # Creating Insights if regional_winners: insights.append( self._createInsight( regional_winners, Insight.INSIGHT_NAMES[Insight.REGIONAL_DISTRICT_WINNERS], 0)) if blue_banners: insights.append( self._createInsight( blue_banners, Insight.INSIGHT_NAMES[Insight.BLUE_BANNERS], 0)) if rca_winners: insights.append( self._createInsight(rca_winners, Insight.INSIGHT_NAMES[Insight.RCA_WINNERS], 0)) if world_champions: insights.append( self._createInsight( world_champions, Insight.INSIGHT_NAMES[Insight.WORLD_CHAMPIONS], 0)) if division_winners: insights.append( self._createInsight( division_winners, Insight.INSIGHT_NAMES[Insight.DIVISION_WINNERS], 0)) if year_successful_elim_teamups: insights.append( self._createInsight( successful_elim_teamups_sorted, Insight.INSIGHT_NAMES[Insight.SUCCESSFUL_ELIM_TEAMUPS], 0)) return insights
def doOverallAwardInsights(self): """ Calculate award insights across all years. Returns a list of Insights. """ insights = [] year_regional_winners = Insight.query(Insight.name == Insight.INSIGHT_NAMES[Insight.REGIONAL_DISTRICT_WINNERS], Insight.year != 0).fetch(1000) regional_winners = defaultdict(int) for insight in year_regional_winners: for number, team_list in insight.data: for team in team_list: regional_winners[team] += number year_blue_banners = Insight.query(Insight.name == Insight.INSIGHT_NAMES[Insight.BLUE_BANNERS], Insight.year != 0).fetch(1000) blue_banners = defaultdict(int) for insight in year_blue_banners: for number, team_list in insight.data: for team in team_list: blue_banners[team] += number year_rca_winners = Insight.query(Insight.name == Insight.INSIGHT_NAMES[Insight.RCA_WINNERS], Insight.year != 0).fetch(1000) rca_winners = defaultdict(int) for insight in year_rca_winners: for team in insight.data: rca_winners[team] += 1 year_world_champions = Insight.query(Insight.name == Insight.INSIGHT_NAMES[Insight.WORLD_CHAMPIONS], Insight.year != 0).fetch(1000) world_champions = defaultdict(int) for insight in year_world_champions: for team in insight.data: world_champions[team] += 1 year_successful_elim_teamups = Insight.query(Insight.name == Insight.INSIGHT_NAMES[Insight.SUCCESSFUL_ELIM_TEAMUPS], Insight.year != 0).fetch(1000) successful_elim_teamups = defaultdict(int) for insight in year_successful_elim_teamups: for teams in insight.data: for pairs in itertools.combinations(teams, 2): successful_elim_teamups[tuple(sorted(pairs))] += 1 successful_elim_teamups_sorted = defaultdict(list) for teams, num_wins in successful_elim_teamups.items(): sorted_teams = sorted(teams, key=lambda team_key: int(team_key[3:])) successful_elim_teamups_sorted[num_wins].append(sorted_teams) successful_elim_teamups_sorted = sorted(successful_elim_teamups_sorted.items(), key=lambda x: -x[0]) # Sorting regional_winners = self._sortTeamWinsDict(regional_winners) blue_banners = self._sortTeamWinsDict(blue_banners) rca_winners = self._sortTeamWinsDict(rca_winners) world_champions = self._sortTeamWinsDict(world_champions) # Creating Insights if regional_winners: insights.append(self._createInsight(regional_winners, Insight.INSIGHT_NAMES[Insight.REGIONAL_DISTRICT_WINNERS], 0)) if blue_banners: insights.append(self._createInsight(blue_banners, Insight.INSIGHT_NAMES[Insight.BLUE_BANNERS], 0)) if rca_winners: insights.append(self._createInsight(rca_winners, Insight.INSIGHT_NAMES[Insight.RCA_WINNERS], 0)) if world_champions: insights.append(self._createInsight(world_champions, Insight.INSIGHT_NAMES[Insight.WORLD_CHAMPIONS], 0)) if year_successful_elim_teamups: insights.append(self._createInsight(successful_elim_teamups_sorted, Insight.INSIGHT_NAMES[Insight.SUCCESSFUL_ELIM_TEAMUPS], 0)) return insights
def doOverallAwardInsights(self): """ Calculate award insights across all years. Returns a list of Insights. """ insights = [] year_regional_winners = Insight.query( Insight.name == Insight.INSIGHT_NAMES[ Insight.REGIONAL_DISTRICT_WINNERS], Insight.year != 0).fetch(1000) regional_winners = {} for insight in year_regional_winners: for number, team_list in insight.data: for team in team_list: if team in regional_winners: regional_winners[team] += number else: regional_winners[team] = number year_blue_banners = Insight.query( Insight.name == Insight.INSIGHT_NAMES[Insight.BLUE_BANNERS], Insight.year != 0).fetch(1000) blue_banners = {} for insight in year_blue_banners: for number, team_list in insight.data: for team in team_list: if team in blue_banners: blue_banners[team] += number else: blue_banners[team] = number year_rca_winners = Insight.query( Insight.name == Insight.INSIGHT_NAMES[Insight.RCA_WINNERS], Insight.year != 0).fetch(1000) rca_winners = {} for insight in year_rca_winners: for team in insight.data: if team in rca_winners: rca_winners[team] += 1 else: rca_winners[team] = 1 year_world_champions = Insight.query( Insight.name == Insight.INSIGHT_NAMES[Insight.WORLD_CHAMPIONS], Insight.year != 0).fetch(1000) world_champions = {} for insight in year_world_champions: for team in insight.data: if team in world_champions: world_champions[team] += 1 else: world_champions[team] = 1 # Sorting regional_winners = self._sortTeamWinsDict(regional_winners) blue_banners = self._sortTeamWinsDict(blue_banners) rca_winners = self._sortTeamWinsDict(rca_winners) world_champions = self._sortTeamWinsDict(world_champions) # Creating Insights if regional_winners: insights.append( self._createInsight( regional_winners, Insight.INSIGHT_NAMES[Insight.REGIONAL_DISTRICT_WINNERS], 0)) if blue_banners: insights.append( self._createInsight( blue_banners, Insight.INSIGHT_NAMES[Insight.BLUE_BANNERS], 0)) if rca_winners: insights.append( self._createInsight(rca_winners, Insight.INSIGHT_NAMES[Insight.RCA_WINNERS], 0)) if world_champions: insights.append( self._createInsight( world_champions, Insight.INSIGHT_NAMES[Insight.WORLD_CHAMPIONS], 0)) return insights