예제 #1
0
파일: results.py 프로젝트: podgib/brownlow
def game_results(game):
  votes = Vote.query(Vote.game == game.key).fetch(1000)

  player_votes = {}

  for vote in votes:
    three = vote.three
    if player_votes.has_key(three):
      player_votes[three].threes += 1
    else:
      player_votes[three] = PlayerGameVotes(game=game.key, player=three, threes=1)

    two = vote.two
    if player_votes.has_key(two):
      player_votes[two].twos += 1
    else:
      player_votes[two] = PlayerGameVotes(game=game.key, player=two, twos=1)

    one = vote.one
    if player_votes.has_key(one):
      player_votes[one].ones += 1
    else:
      player_votes[one] = PlayerGameVotes(game=game.key, player=one, ones=1)

  if len(player_votes) < 3:
    # No votes cast
    return None

  sorted_votes = sorted(player_votes.items(), key=lambda p: -p[1].ranking_points())
  players = [sorted_votes[0][0], sorted_votes[1][0], sorted_votes[2][0]]
  result = GameResults(game=game.key, three=players[0], two=players[1], one=players[2], voters=len(votes))

  return result
예제 #2
0
파일: admin.py 프로젝트: podgib/brownlow
 def delete_game(self, game):
   tokens = Token.query(Token.game == game.key)
   keys = [token.key for token in tokens]
   votes = Vote.query(Vote.game == game.key)
   keys.extend([vote.key for vote in votes])
   votes = SelfVote.query(SelfVote.game == game.key)
   keys.extend([vote.key for vote in votes])
   ndb.delete_multi_async(keys)
   game.key.delete()