예제 #1
0
 def compute(self, user_profile):
     result = 0
     games_by_player = GameRepository.get_by_profile(user_profile)
     victories_by_player = GameRepository.filter_by_victory(games_by_player)
     victories_with_mage_down = GameRepository.filter_by_at_least_one_mage_died(
         victories_by_player)
     victories_with_mage_down = victories_with_mage_down.count()
     if victories_with_mage_down > 0:
         result = 1
     if victories_with_mage_down >= 10:
         result = 2
     return result
예제 #2
0
 def compute_nemesis_data(nemesis):
     game_queryset = GameRepository.get_all_game_by_nemesis(nemesis=nemesis)
     nemesis.game_number = game_queryset.count()
     win_rate = GameService.get_win_rate(game_queryset)
     if win_rate is not None:
         nemesis.win_rate = win_rate
     nemesis.save()
예제 #3
0
 def compute_mage_data(mage):
     game_queryset = GameRepository.get_all_game_by_mage(mage=mage)
     mage.game_number = game_queryset.count()
     win_rate = GameService.get_win_rate(game_queryset)
     if win_rate is not None:
         mage.win_rate = win_rate
     mage.save()
예제 #4
0
 def compute_card_data(card):
     game_queryset = GameRepository.get_all_game_by_card(card=card)
     card.game_number = game_queryset.count()
     win_rate = GameService.get_win_rate(game_queryset)
     if win_rate is not None:
         card.win_rate = win_rate
     card.save()
 def get_database_data(filters_mage):
     games = GameRepository.get_by_mage_list(filters_mage)
     available_average_ether_cost = list(
         set(filter(None, map(lambda game: game.average_ether_cost,
                              games))))
     available_average_ether_cost.sort()
     average_ether_cost_win_rate = []
     for average_ether_cost in available_average_ether_cost:
         games = GameRepository.get_by_average_ether_cost(
             average_ether_cost)
         win_rate = GameService.get_win_rate(games)
         if win_rate is not None:
             average_ether_cost_win_rate.append({
                 "average_ether_cost": average_ether_cost,
                 "win_rate": win_rate,
             })
     return average_ether_cost_win_rate
예제 #6
0
 def get_database_data(filters_mage):
     games = GameRepository.get_by_mage_list(filters_mage)
     available_damage_possibility = list(
         set(map(lambda game: game.total_damage, games)))
     available_damage_possibility.sort()
     games_available_damage = []
     for available_damage in available_damage_possibility:
         games = GameRepository.get_by_total_damage(available_damage)
         average_damage_dealt = GameService.compute_average_damage_dealt(
             games)
         if average_damage_dealt is not None:
             games_available_damage.append({
                 "damage_available":
                 available_damage,
                 "damage_dealt":
                 average_damage_dealt,
             })
     return games_available_damage
예제 #7
0
 def get_database_data(filters_mage):
     game_queryset = GameRepository.get_by_mage_list(filters_mage)
     nemesis_list = GameRepository.get_nemesis_list(game_queryset)
     nemesis_win_rates = []
     for nemesis in nemesis_list:
         games_by_nemesis_and_mage = GameRepository.filter_by_nemesis(game_queryset, nemesis.id)
         win_rate = GameService.get_win_rate(games_by_nemesis_and_mage)
         game_number = games_by_nemesis_and_mage.count()
         if win_rate is not None:
             nemesis_win_rates.append({
                 "nemesis_name": str(nemesis),
                 "nemesis_win_rate": win_rate,
                 "game_number": game_number,
             })
     nemesis_win_rates.sort(
         key=lambda nemesis_win_rate: nemesis_win_rate["game_number"],
         reverse=True
     )
     return nemesis_win_rates
예제 #8
0
 def get_database_data(self):
     mage_number_list = self.possible_mage_number
     mage_number_win_rates = []
     for mage_number in mage_number_list:
         games = GameRepository.get_by_mage_number(mage_number)
         win_rate = GameService.get_win_rate(games)
         if win_rate is not None:
             mage_number_win_rates.append({
                 "mage_number": mage_number,
                 "win_rate": win_rate,
                 "game_number": games.count()
             })
     return mage_number_win_rates
 def get_database_data(filters_mage):
     game_queryset = GameRepository.get_by_mage_list(filters_mage)
     difficulty_list = NemesisRepository.get_unique_difficulties(
         game_queryset)
     nemesis_difficulty_win_rates = []
     for difficulty in difficulty_list:
         nemesis_list = NemesisRepository.get_by_difficulty(difficulty)
         nemesis_list = NemesisRepository.transform_name_list_to_id(
             nemesis_list)
         games = GameRepository.filter_by_nemesis(game_queryset,
                                                  nemesis_list)
         win_rate = GameService.get_win_rate(games)
         game_number = games.count()
         if win_rate is not None:
             nemesis_difficulty_win_rates.append({
                 "nemesis_difficulty":
                 str(difficulty),
                 "win_rate":
                 win_rate,
                 "game_number":
                 game_number
             })
     return nemesis_difficulty_win_rates
예제 #10
0
 def handle(self, *args, **options):
     games = GameRepository.get_queryset()
     for game in games:
         print(game.remaining_nemesis_hp)
예제 #11
0
 def update_profile_data(profile):
     games = GameRepository.get_by_profile(profile)
     profile.game_number = games.count()
     victories = GameRepository.filter_by_victory(games)
     profile.victory_number = victories.count()
     profile.save()