Beispiel #1
0
def getAllChampionWinRates(minGames=1):
    """Returns a sorted list of champions, wins, losses, and winrate.
    """
    winrates = []
    
    for championId in legendaryapi.getAllChampionIds():
        championName = legendaryapi.getChampionNameFromId(championId)
        gameResults = mongo_dao.getGameResultsIncludingChampion(championId)
        numGames = len(gameResults)
        if numGames >= minGames:
            winrateEntry = {}
            winrateEntry['champion'] = championName
            winrateEntry['won'] = 0
            winrateEntry['lost'] = 0
            
            for gameResult in gameResults:
                if _getStatisticByNameFromGameResult(gameResult, WIN):
                    winrateEntry['won'] += 1
                else :
                    winrateEntry['lost'] += 1
                
            winrateEntry['winrate'] = 1.0 * winrateEntry['won'] / numGames
            winrates.append(winrateEntry)
            
    return sorted(winrates, key=lambda winrate: winrate['winrate'], reverse=True)
Beispiel #2
0
def getAllChampionContestRates(minGames=1):
    contestRates = []
    totalGames = getTotalGames()
    
    for championId in legendaryapi.getAllChampionIds():
        championName = legendaryapi.getChampionNameFromId(championId)
        games = mongo_dao.getAllGamesIncludingChampion(championId)
        numGames = len(games)
        if numGames >= minGames:
            contestRateEntry = {}
            contestRateEntry['champion'] = championName
            contestRateEntry['picked'] = 0
            contestRateEntry['banned'] = 0
            
            for game in games:
                if _isChampionPickedInGame(game, championId):
                    contestRateEntry['picked'] += 1
                elif _isChampionBannedInGame(game, championId):
                    contestRateEntry['banned'] += 1
            
            contestRateEntry['contested'] = numGames
            contestRateEntry['contestRate'] = 1.0 * numGames / totalGames
            contestRates.append(contestRateEntry)
    
    return sorted(contestRates, key=lambda contestRate: contestRate['contestRate'], reverse=True)
Beispiel #3
0
def getAllChampionContestRates(minGames=1):
    contestRates = []
    totalGames = getTotalGames()

    for championId in legendaryapi.getAllChampionIds():
        championName = legendaryapi.getChampionNameFromId(championId)
        games = mongo_dao.getAllGamesIncludingChampion(championId)
        numGames = len(games)
        if numGames >= minGames:
            contestRateEntry = {}
            contestRateEntry['champion'] = championName
            contestRateEntry['picked'] = 0
            contestRateEntry['banned'] = 0

            for game in games:
                if _isChampionPickedInGame(game, championId):
                    contestRateEntry['picked'] += 1
                elif _isChampionBannedInGame(game, championId):
                    contestRateEntry['banned'] += 1

            contestRateEntry['contested'] = numGames
            contestRateEntry['contestRate'] = 1.0 * numGames / totalGames
            contestRates.append(contestRateEntry)

    return sorted(contestRates,
                  key=lambda contestRate: contestRate['contestRate'],
                  reverse=True)
Beispiel #4
0
def getAllChampionWinRates(minGames=1):
    """Returns a sorted list of champions, wins, losses, and winrate.
    """
    winrates = []

    for championId in legendaryapi.getAllChampionIds():
        championName = legendaryapi.getChampionNameFromId(championId)
        gameResults = mongo_dao.getGameResultsIncludingChampion(championId)
        numGames = len(gameResults)
        if numGames >= minGames:
            winrateEntry = {}
            winrateEntry['champion'] = championName
            winrateEntry['won'] = 0
            winrateEntry['lost'] = 0

            for gameResult in gameResults:
                if _getStatisticByNameFromGameResult(gameResult, WIN):
                    winrateEntry['won'] += 1
                else:
                    winrateEntry['lost'] += 1

            winrateEntry['winrate'] = 1.0 * winrateEntry['won'] / numGames
            winrates.append(winrateEntry)

    return sorted(winrates,
                  key=lambda winrate: winrate['winrate'],
                  reverse=True)
Beispiel #5
0
def getSummonerStatsForGameId(gameId, summonerId, summonerName=None):
    """
    Champion
    Win?
    Level
    KDA
    CS
    Jungle creeps killed
    Gold earned
    Damage dealt to champions
    Damage taken
    Wards placed
    """
    summonerStats = {}
    if summonerName is None:
        summonerName = mongo_dao.getSummonerNameFromId(
            summonerId)  # TODO REMOVE THIS API CALL

    gameResults = mongo_dao.getResultsForGameId(gameId)
    gameResult = _getResultFromGameResultsBySummonerId(gameResults, summonerId)
    if gameResult is None:
        return None

    statsArray = gameResult['statistics']['array']

    summonerStats['Summoner'] = summonerName
    summonerStats['Game ID'] = gameId
    summonerStats['Game Date'] = str(
        _convertUtcDatetimeStringToDatetimeWithTimeZone(
            gameResult['createDate'], DEFAULT_TIME_ZONE))
    summonerStats['Champion'] = legendaryapi.getChampionNameFromId(
        gameResult['championId'])
    summonerStats['Won'] = _getStatisticByName(statsArray, WIN) == 1
    summonerStats['Level'] = _getStatisticByName(statsArray, LEVEL)
    summonerStats['Kills'] = _getStatisticByName(statsArray, KILLS)
    summonerStats['Deaths'] = _getStatisticByName(statsArray, DEATHS)
    summonerStats['Assists'] = _getStatisticByName(statsArray, ASSISTS)
    summonerStats['Jungle Monsters Killed'] = _getStatisticByName(
        statsArray, JUNGLE_MONSTERS_KILLED)
    summonerStats['Minions Killed'] = _getStatisticByName(
        statsArray, MINIONS_KILLED) + summonerStats['Jungle Monsters Killed']
    summonerStats['Gold Earned'] = _getStatisticByName(statsArray, GOLD_EARNED)
    summonerStats['Damage Dealt To Champions'] = _getStatisticByName(
        statsArray, DAMAGE_DEALT_TO_CHAMPIONS)
    summonerStats['Damage Taken'] = _getStatisticByName(
        statsArray, DAMAGE_TAKEN)
    summonerStats['Wards Placed'] = _getStatisticByName(
        statsArray, WARDS_PLACED)

    return summonerStats
Beispiel #6
0
def getSummonerStatsForGameId(gameId, summonerId, summonerName=None):
    """
    Champion
    Win?
    Level
    KDA
    CS
    Jungle creeps killed
    Gold earned
    Damage dealt to champions
    Damage taken
    Wards placed
    """
    summonerStats = {}
    if summonerName is None:
        summonerName = mongo_dao.getSummonerNameFromId(summonerId) # TODO REMOVE THIS API CALL
    
    gameResults = mongo_dao.getResultsForGameId(gameId)
    gameResult = _getResultFromGameResultsBySummonerId(gameResults, summonerId)
    if gameResult is None:
        return None
        
    statsArray = gameResult['statistics']['array']
    
    summonerStats['Summoner'] = summonerName
    summonerStats['Game ID'] = gameId
    summonerStats['Game Date'] = str(_convertUtcDatetimeStringToDatetimeWithTimeZone(gameResult['createDate'], DEFAULT_TIME_ZONE))
    summonerStats['Champion'] = legendaryapi.getChampionNameFromId(gameResult['championId'])
    summonerStats['Won'] = _getStatisticByName(statsArray, WIN) == 1
    summonerStats['Level'] = _getStatisticByName(statsArray, LEVEL)
    summonerStats['Kills'] = _getStatisticByName(statsArray, KILLS)
    summonerStats['Deaths'] = _getStatisticByName(statsArray, DEATHS)
    summonerStats['Assists'] = _getStatisticByName(statsArray, ASSISTS)
    summonerStats['Jungle Monsters Killed'] = _getStatisticByName(statsArray, JUNGLE_MONSTERS_KILLED)
    summonerStats['Minions Killed'] = _getStatisticByName(statsArray, MINIONS_KILLED) + summonerStats['Jungle Monsters Killed']
    summonerStats['Gold Earned'] = _getStatisticByName(statsArray, GOLD_EARNED)
    summonerStats['Damage Dealt To Champions'] = _getStatisticByName(statsArray, DAMAGE_DEALT_TO_CHAMPIONS)
    summonerStats['Damage Taken'] = _getStatisticByName(statsArray, DAMAGE_TAKEN)
    summonerStats['Wards Placed'] = _getStatisticByName(statsArray, WARDS_PLACED)
    
    return summonerStats
Beispiel #7
0
def getChampionStats(championName):
    championId = legendaryapi.getChampionIdFromName(championName)
    stats = {}
    
    wins = 0
    losses = 0
    
    summonerStats = {}
    
    gameResults = mongo_dao.getGameResultsIncludingChampion(championId)
    for gameResult in gameResults:
        summonerId = gameResult['userId']
        summonerName = mongo_dao.getSummonerNameFromId(summonerId)
        
        if _getStatisticByNameFromGameResult(gameResult, WIN) == 1:
            wins = wins + 1
            won = True
        else:
            losses = losses + 1
            won = False
        
        kills =_getStatisticByNameFromGameResult(gameResult, KILLS)
        deaths = _getStatisticByNameFromGameResult(gameResult, DEATHS)
        assists = _getStatisticByNameFromGameResult(gameResult, ASSISTS)
        cs = _getStatisticByNameFromGameResult(gameResult, MINIONS_KILLED) + _getStatisticByNameFromGameResult(gameResult, JUNGLE_MONSTERS_KILLED)
        jungleCs = _getStatisticByNameFromGameResult(gameResult, JUNGLE_MONSTERS_KILLED)
        damageDealt = _getStatisticByNameFromGameResult(gameResult, DAMAGE_DEALT_TO_CHAMPIONS)
        damageTaken = _getStatisticByNameFromGameResult(gameResult, DAMAGE_TAKEN)
        wardsPlaced = _getStatisticByNameFromGameResult(gameResult, WARDS_PLACED)
    
        if summonerName not in summonerStats:
            summonerStatsEntry = {}
            summonerStatsEntry['Wins'] = 0
            summonerStatsEntry['Losses'] = 0
            summonerStatsEntry['Kills'] = []
            summonerStatsEntry['Deaths'] = []
            summonerStatsEntry['Assists'] = []
            summonerStatsEntry['CS'] = []
            summonerStatsEntry['Jungle CS'] = []
            summonerStatsEntry['Damage Dealt'] = []
            summonerStatsEntry['Damage Taken'] = []
            summonerStatsEntry['Wards Placed'] = []
            
            summonerStats[summonerName] = summonerStatsEntry
            
        summonerStatsEntry = summonerStats[summonerName]
        
        if won:
            summonerStatsEntry['Wins'] = summonerStatsEntry['Wins'] + 1
        else:
            summonerStatsEntry['Losses'] = summonerStatsEntry['Losses'] + 1
        summonerStatsEntry['Kills'].append(kills)
        summonerStatsEntry['Deaths'].append(deaths)
        summonerStatsEntry['Assists'].append(assists)
        summonerStatsEntry['CS'].append(cs)
        summonerStatsEntry['Jungle CS'].append(jungleCs)
        summonerStatsEntry['Damage Dealt'].append(damageDealt)
        summonerStatsEntry['Damage Taken'].append(damageTaken)
        summonerStatsEntry['Wards Placed'].append(wardsPlaced)
        
    summonerStatsList = []
    for summonerName, summonerStatsEntry in summonerStats.iteritems():
        summonerStatsEntry['Summoner'] = summonerName
        summonerStatsEntry['Kills'] = _getAverage(summonerStatsEntry['Kills'])
        summonerStatsEntry['Deaths'] = _getAverage(summonerStatsEntry['Deaths'])
        summonerStatsEntry['Assists'] = _getAverage(summonerStatsEntry['Assists'])
        summonerStatsEntry['CS'] = _getAverage(summonerStatsEntry['CS'])
        summonerStatsEntry['Jungle CS'] = _getAverage(summonerStatsEntry['Jungle CS'])
        summonerStatsEntry['Damage Dealt'] = _getAverage(summonerStatsEntry['Damage Dealt'])
        summonerStatsEntry['Damage Taken'] = _getAverage(summonerStatsEntry['Damage Taken'])
        summonerStatsEntry['Wards Placed'] = _getAverage(summonerStatsEntry['Wards Placed'])
        
        summonerStatsList.append(summonerStatsEntry)
        
    summonerStatsList = sorted(summonerStatsList, key=lambda summonerStatsEntry: summonerStatsEntry['Wins'], reverse=True)
    stats['Summoner stats'] = summonerStatsList
            
    stats['Champion'] = legendaryapi.getChampionNameFromId(championId)
    stats['Picks'] = len(gameResults)
    stats['Bans'] = getNumberOfGamesChampionIsBanned(championName)
    stats['Contested'] = stats['Picks'] + stats['Bans']
    stats['Wins'] = wins
    stats['Losses'] = losses
    
    return stats
Beispiel #8
0
def getSummonerStats(summonerName):
    summonerId = mongo_dao.getSummonerIdFromName(summonerName)
    
    stats = {}
    gameResults = mongo_dao.getGameResultsForSummonerName(summonerName)
    
    totalGames = len(gameResults)
    wins = 0
    losses = 0
    totalKills = []
    totalDeaths = []
    totalAssists = []
    
    kdas = []
    
    # champ -> [kills]
    #          [deaths]
    #          [assists]
    #          [cs]
    #          [damage dealt]
    #          [damage taken]
    #          [wards bought]
    championStats = {}
    
    for gameResult in gameResults:
        statsArray = gameResult['statistics']['array']
        
        if _getStatisticByName(statsArray, WIN) == 1:
            wins = wins + 1
            won = True
        else:
            losses = losses + 1
            won = False
        
        totalKills.append(_getStatisticByName(statsArray, KILLS))
        totalDeaths.append(_getStatisticByName(statsArray, DEATHS))
        totalAssists.append(_getStatisticByName(statsArray, ASSISTS))
        
        kills =_getStatisticByName(statsArray, KILLS)
        deaths = _getStatisticByName(statsArray, DEATHS)
        assists = _getStatisticByName(statsArray, ASSISTS)
        cs = _getStatisticByName(statsArray, MINIONS_KILLED) + _getStatisticByName(statsArray, JUNGLE_MONSTERS_KILLED)
        jungleCs = _getStatisticByName(statsArray, JUNGLE_MONSTERS_KILLED)
        damageDealt = _getStatisticByName(statsArray, DAMAGE_DEALT_TO_CHAMPIONS)
        damageTaken = _getStatisticByName(statsArray, DAMAGE_TAKEN)
        wardsPlaced = _getStatisticByName(statsArray, WARDS_PLACED)
        
        championName = legendaryapi.getChampionNameFromId(gameResult['championId'])
        
        if championName not in championStats:
            championStatsEntry = {}
            championStatsEntry['Wins'] = 0
            championStatsEntry['Losses'] = 0
            championStatsEntry['Kills'] = []
            championStatsEntry['Deaths'] = []
            championStatsEntry['Assists'] = []
            championStatsEntry['CS'] = []
            championStatsEntry['Jungle CS'] = []
            championStatsEntry['Damage Dealt'] = []
            championStatsEntry['Damage Taken'] = []
            championStatsEntry['Wards Placed'] = []
            
            championStats[championName] = championStatsEntry
        
        championStatsEntry = championStats[championName]
        if won:
            championStatsEntry['Wins'] = championStatsEntry['Wins'] + 1
        else:
            championStatsEntry['Losses'] = championStatsEntry['Losses'] + 1
        championStatsEntry['Kills'].append(kills)
        championStatsEntry['Deaths'].append(deaths)
        championStatsEntry['Assists'].append(assists)
        championStatsEntry['CS'].append(cs)
        championStatsEntry['Jungle CS'].append(jungleCs)
        championStatsEntry['Damage Dealt'].append(damageDealt)
        championStatsEntry['Damage Taken'].append(damageTaken)
        championStatsEntry['Wards Placed'].append(wardsPlaced)
        
    championStatsList = []
    stats['Summoner'] = mongo_dao.getStylizedSummonerName(summonerName)
    stats['Total Games'] = len(gameResults)
    stats['Wins'] = wins
    stats['Losses'] = losses
    stats['Average Kills'] = _getAverage(totalKills)
    stats['Average Deaths'] = _getAverage(totalDeaths)
    stats['Average Assists'] = _getAverage(totalAssists)
    # TODO add winrate
    
    # TODO add win %
    for championName, championStatsEntry in championStats.iteritems():
        championStatsEntry['Champion'] = championName
        championStatsEntry['Kills'] = _getAverage(championStatsEntry['Kills'])
        championStatsEntry['Deaths'] = _getAverage(championStatsEntry['Deaths'])
        championStatsEntry['Assists'] = _getAverage(championStatsEntry['Assists'])
        championStatsEntry['CS'] = _getAverage(championStatsEntry['CS'])
        championStatsEntry['Jungle CS'] = _getAverage(championStatsEntry['Jungle CS'])
        championStatsEntry['Damage Dealt'] = _getAverage(championStatsEntry['Damage Dealt'])
        championStatsEntry['Damage Taken'] = _getAverage(championStatsEntry['Damage Taken'])
        championStatsEntry['Wards Placed'] = _getAverage(championStatsEntry['Wards Placed'])
        
        championStatsList.append(championStatsEntry)
        
    championStatsList = sorted(championStatsList, key=lambda championStatsEntry: championStatsEntry['Wins'], reverse=True)
    stats['Champion stats'] = championStatsList
        
    return stats
Beispiel #9
0
def getChampionStats(championName):
    championId = legendaryapi.getChampionIdFromName(championName)
    stats = {}

    wins = 0
    losses = 0

    summonerStats = {}

    gameResults = mongo_dao.getGameResultsIncludingChampion(championId)
    for gameResult in gameResults:
        summonerId = gameResult['userId']
        summonerName = mongo_dao.getSummonerNameFromId(summonerId)

        if _getStatisticByNameFromGameResult(gameResult, WIN) == 1:
            wins = wins + 1
            won = True
        else:
            losses = losses + 1
            won = False

        kills = _getStatisticByNameFromGameResult(gameResult, KILLS)
        deaths = _getStatisticByNameFromGameResult(gameResult, DEATHS)
        assists = _getStatisticByNameFromGameResult(gameResult, ASSISTS)
        cs = _getStatisticByNameFromGameResult(
            gameResult, MINIONS_KILLED) + _getStatisticByNameFromGameResult(
                gameResult, JUNGLE_MONSTERS_KILLED)
        jungleCs = _getStatisticByNameFromGameResult(gameResult,
                                                     JUNGLE_MONSTERS_KILLED)
        damageDealt = _getStatisticByNameFromGameResult(
            gameResult, DAMAGE_DEALT_TO_CHAMPIONS)
        damageTaken = _getStatisticByNameFromGameResult(
            gameResult, DAMAGE_TAKEN)
        wardsPlaced = _getStatisticByNameFromGameResult(
            gameResult, WARDS_PLACED)

        if summonerName not in summonerStats:
            summonerStatsEntry = {}
            summonerStatsEntry['Wins'] = 0
            summonerStatsEntry['Losses'] = 0
            summonerStatsEntry['Kills'] = []
            summonerStatsEntry['Deaths'] = []
            summonerStatsEntry['Assists'] = []
            summonerStatsEntry['CS'] = []
            summonerStatsEntry['Jungle CS'] = []
            summonerStatsEntry['Damage Dealt'] = []
            summonerStatsEntry['Damage Taken'] = []
            summonerStatsEntry['Wards Placed'] = []

            summonerStats[summonerName] = summonerStatsEntry

        summonerStatsEntry = summonerStats[summonerName]

        if won:
            summonerStatsEntry['Wins'] = summonerStatsEntry['Wins'] + 1
        else:
            summonerStatsEntry['Losses'] = summonerStatsEntry['Losses'] + 1
        summonerStatsEntry['Kills'].append(kills)
        summonerStatsEntry['Deaths'].append(deaths)
        summonerStatsEntry['Assists'].append(assists)
        summonerStatsEntry['CS'].append(cs)
        summonerStatsEntry['Jungle CS'].append(jungleCs)
        summonerStatsEntry['Damage Dealt'].append(damageDealt)
        summonerStatsEntry['Damage Taken'].append(damageTaken)
        summonerStatsEntry['Wards Placed'].append(wardsPlaced)

    summonerStatsList = []
    for summonerName, summonerStatsEntry in summonerStats.iteritems():
        summonerStatsEntry['Summoner'] = summonerName
        summonerStatsEntry['Kills'] = _getAverage(summonerStatsEntry['Kills'])
        summonerStatsEntry['Deaths'] = _getAverage(
            summonerStatsEntry['Deaths'])
        summonerStatsEntry['Assists'] = _getAverage(
            summonerStatsEntry['Assists'])
        summonerStatsEntry['CS'] = _getAverage(summonerStatsEntry['CS'])
        summonerStatsEntry['Jungle CS'] = _getAverage(
            summonerStatsEntry['Jungle CS'])
        summonerStatsEntry['Damage Dealt'] = _getAverage(
            summonerStatsEntry['Damage Dealt'])
        summonerStatsEntry['Damage Taken'] = _getAverage(
            summonerStatsEntry['Damage Taken'])
        summonerStatsEntry['Wards Placed'] = _getAverage(
            summonerStatsEntry['Wards Placed'])

        summonerStatsList.append(summonerStatsEntry)

    summonerStatsList = sorted(
        summonerStatsList,
        key=lambda summonerStatsEntry: summonerStatsEntry['Wins'],
        reverse=True)
    stats['Summoner stats'] = summonerStatsList

    stats['Champion'] = legendaryapi.getChampionNameFromId(championId)
    stats['Picks'] = len(gameResults)
    stats['Bans'] = getNumberOfGamesChampionIsBanned(championName)
    stats['Contested'] = stats['Picks'] + stats['Bans']
    stats['Wins'] = wins
    stats['Losses'] = losses

    return stats
Beispiel #10
0
def getSummonerStats(summonerName):
    summonerId = mongo_dao.getSummonerIdFromName(summonerName)

    stats = {}
    gameResults = mongo_dao.getGameResultsForSummonerName(summonerName)

    totalGames = len(gameResults)
    wins = 0
    losses = 0
    totalKills = []
    totalDeaths = []
    totalAssists = []

    kdas = []

    # champ -> [kills]
    #          [deaths]
    #          [assists]
    #          [cs]
    #          [damage dealt]
    #          [damage taken]
    #          [wards bought]
    championStats = {}

    for gameResult in gameResults:
        statsArray = gameResult['statistics']['array']

        if _getStatisticByName(statsArray, WIN) == 1:
            wins = wins + 1
            won = True
        else:
            losses = losses + 1
            won = False

        totalKills.append(_getStatisticByName(statsArray, KILLS))
        totalDeaths.append(_getStatisticByName(statsArray, DEATHS))
        totalAssists.append(_getStatisticByName(statsArray, ASSISTS))

        kills = _getStatisticByName(statsArray, KILLS)
        deaths = _getStatisticByName(statsArray, DEATHS)
        assists = _getStatisticByName(statsArray, ASSISTS)
        cs = _getStatisticByName(statsArray,
                                 MINIONS_KILLED) + _getStatisticByName(
                                     statsArray, JUNGLE_MONSTERS_KILLED)
        jungleCs = _getStatisticByName(statsArray, JUNGLE_MONSTERS_KILLED)
        damageDealt = _getStatisticByName(statsArray,
                                          DAMAGE_DEALT_TO_CHAMPIONS)
        damageTaken = _getStatisticByName(statsArray, DAMAGE_TAKEN)
        wardsPlaced = _getStatisticByName(statsArray, WARDS_PLACED)

        championName = legendaryapi.getChampionNameFromId(
            gameResult['championId'])

        if championName not in championStats:
            championStatsEntry = {}
            championStatsEntry['Wins'] = 0
            championStatsEntry['Losses'] = 0
            championStatsEntry['Kills'] = []
            championStatsEntry['Deaths'] = []
            championStatsEntry['Assists'] = []
            championStatsEntry['CS'] = []
            championStatsEntry['Jungle CS'] = []
            championStatsEntry['Damage Dealt'] = []
            championStatsEntry['Damage Taken'] = []
            championStatsEntry['Wards Placed'] = []

            championStats[championName] = championStatsEntry

        championStatsEntry = championStats[championName]
        if won:
            championStatsEntry['Wins'] = championStatsEntry['Wins'] + 1
        else:
            championStatsEntry['Losses'] = championStatsEntry['Losses'] + 1
        championStatsEntry['Kills'].append(kills)
        championStatsEntry['Deaths'].append(deaths)
        championStatsEntry['Assists'].append(assists)
        championStatsEntry['CS'].append(cs)
        championStatsEntry['Jungle CS'].append(jungleCs)
        championStatsEntry['Damage Dealt'].append(damageDealt)
        championStatsEntry['Damage Taken'].append(damageTaken)
        championStatsEntry['Wards Placed'].append(wardsPlaced)

    championStatsList = []
    stats['Summoner'] = mongo_dao.getStylizedSummonerName(summonerName)
    stats['Total Games'] = len(gameResults)
    stats['Wins'] = wins
    stats['Losses'] = losses
    stats['Average Kills'] = _getAverage(totalKills)
    stats['Average Deaths'] = _getAverage(totalDeaths)
    stats['Average Assists'] = _getAverage(totalAssists)
    # TODO add winrate

    # TODO add win %
    for championName, championStatsEntry in championStats.iteritems():
        championStatsEntry['Champion'] = championName
        championStatsEntry['Kills'] = _getAverage(championStatsEntry['Kills'])
        championStatsEntry['Deaths'] = _getAverage(
            championStatsEntry['Deaths'])
        championStatsEntry['Assists'] = _getAverage(
            championStatsEntry['Assists'])
        championStatsEntry['CS'] = _getAverage(championStatsEntry['CS'])
        championStatsEntry['Jungle CS'] = _getAverage(
            championStatsEntry['Jungle CS'])
        championStatsEntry['Damage Dealt'] = _getAverage(
            championStatsEntry['Damage Dealt'])
        championStatsEntry['Damage Taken'] = _getAverage(
            championStatsEntry['Damage Taken'])
        championStatsEntry['Wards Placed'] = _getAverage(
            championStatsEntry['Wards Placed'])

        championStatsList.append(championStatsEntry)

    championStatsList = sorted(
        championStatsList,
        key=lambda championStatsEntry: championStatsEntry['Wins'],
        reverse=True)
    stats['Champion stats'] = championStatsList

    return stats