def getRankings(): scoresByType = {t : list() for t in ScoreType.types()} players = Player.all(keys_only=True) for player in players: playerId = player.id_or_name() scoresHelper = ScoresHelper(playerId) if scoresHelper.hasScores(): for scoreType in ScoreType.types(): score = scoresHelper.getScore(scoreType) scoresByType[scoreType].append({'playerId':playerId, 'score':score}) # Sort scores for scoreType in ScoreType.types(): scoresByType[scoreType] = sorted(scoresByType[scoreType], key=operator.itemgetter('score'), reverse=True) rankings = {} for scoreType in ScoreType.types(): rank = 1 rankings[scoreType] = {} for t in scoresByType[scoreType]: rankings[scoreType][t['playerId']] = rank rank += 1 return rankings
def get(self): # Create default players if none exist q = db.Query(Player) if q.count() == 0: for pname in self.DEFAULT_PLAYER_NAMES: Player(name=pname).put() players = [{'name' : p.name, 'id' : p.key().id_or_name()} for p in Player.all()] self.response.out.write(json.dumps(players))