Exemple #1
0
def player_stats(request, key):
  player = get_object(Player, key)
  # Calculate the player's ranking on the fly
  singles_ranking = 0
  doubles_ranking = 0
  singles_players = Player.gql("WHERE owner = :owner AND active = True ORDER BY singles_ranking_points DESC, name",
                                owner=request.user)
  for sp in singles_players:
    singles_ranking += 1
    if sp.key == player.key:
      break
  doubles_players = Player.gql("WHERE owner = :owner AND active = True ORDER BY doubles_ranking_points DESC, name",
                                owner=request.user)
  for dp in doubles_players:
    doubles_ranking += 1
    if dp.key == player.key:
      break

  games = []
  pgs = PlayerGame.gql("WHERE player = :player ORDER BY date_played DESC LIMIT 20", player=player)
  for pg in pgs:
    games.append(pg)
  return render_to_response(request, 'pingpong/player_stats.html',
    { 'player': player, 'singles_ranking': singles_ranking, 
      'doubles_ranking': doubles_ranking, 'games': games })
Exemple #2
0
def delete_player_games(game):
  pgs = PlayerGame.gql("WHERE game = :game", game=game)
  for pg in pgs:
    pg.delete()
Exemple #3
0
from pingpong.models import Player, Team, Game, PlayerGame

num_days = 7
reduction_factor = 0.1
check_point = datetime.utcnow() # The point from which we should check back num_days to see whether the player has played any games
start_point = check_point - timedelta(days=num_days)
owner_key_name = '' # Set this to the key name (not the key itself) of the account owner
owner = User.get_by_key_name(owner_key_name)
if owner:
  # Find all players belonging to owner
  players = Player.gql("WHERE owner = :owner", owner=owner)
  for p in players:
    singles_count = 0
    doubles_count = 0
    # Get all the player's games in the period defined
    pgs = PlayerGame.gql("WHERE player = :player AND date_played > :start_point", player=p, start_point=start_point)
    for pg in pgs:
      if pg.game.team1.player1 and pg.game.team1.player2: # doubles game
        doubles_count += 1
      else: # singles game
        singles_count += 1
    if singles_count == 0:
      p.singles_ranking_points = p.singles_ranking_points - (p.singles_ranking_points * reduction_factor)
      p.put()
      print '%s has had their singles ranking points reduced to %f' % (p.name, p.singles_ranking_points)
    else:
      print '%s hasn\'t had any change made to their singles ranking points' % p.name
    
    if doubles_count == 0:
      p.doubles_ranking_points = p.doubles_ranking_points - (p.doubles_ranking_points * reduction_factor)
      p.put()