The constructor takes a query row that has been fetched, and
it requires the following columns to be present in the row:
- game_id, game_type_cd, winner, start_dt, server_id, server_name,
- map_id, map_name, player_id, nick, rank, team
+ game_id, game_type_cd, game_type_descr, winner, start_dt,
+ server_id, server_name, map_id, map_name, player_id, nick,
+ rank, team
The following columns are optional:
def __init__(self, row):
self.game_id = row.game_id
self.game_type_cd = row.game_type_cd
+ self.game_type_descr = row.game_type_descr
self.winner = row.winner
self.start_dt = row.start_dt
self.fuzzy_date = pretty_date(row.start_dt)
except:
self.elo_delta = None
+ def _asdict(self):
+ return {
+ "game_id": self.game_id,
+ "game_type_cd": self.game_type_cd,
+ "game_type_descr": self.game_type_descr,
+ "winner": self.winner,
+ "start_dt": self.start_dt,
+ "fuzzy_dt": self.fuzzy_date,
+ "epoch": self.epoch,
+ "server_id": self.server_id,
+ "server_name": self.server_name,
+ "map_id": self.map_id,
+ "map_name": self.map_name,
+ "player_id": self.player_id,
+ "nick": self.nick,
+ "nick_html_colors": self.nick_html_colors,
+ "rank": self.rank,
+ "team": self.team,
+ "elo_delta": self.elo_delta,
+ }
+
+ def __repr__(self):
+ return "<RecentGame(id=%s, gametype=%s, server=%s, map=%s)>" % (self.game_id, self.game_type_cd, self.server_name, self.map_name)
+
def recent_games_q(server_id=None, map_id=None, player_id=None, cutoff=None):
'''
look when querying. Only games that happened on or after the
cutoff (which is a datetime object) will be returned.
'''
- recent_games_q = DBSession.query(Game.game_id, Game.game_type_cd,
- Game.winner, Game.start_dt, Server.server_id,
- Server.name.label('server_name'), Map.map_id,
+ recent_games_q = DBSession.query(Game.game_id, GameType.game_type_cd,
+ Game.winner, Game.start_dt, GameType.descr.label('game_type_descr'),
+ Server.server_id, Server.name.label('server_name'), Map.map_id,
Map.name.label('map_name'), PlayerGameStat.player_id,
PlayerGameStat.nick, PlayerGameStat.rank, PlayerGameStat.team,
PlayerGameStat.elo_delta).\
filter(Game.server_id==Server.server_id).\
filter(Game.map_id==Map.map_id).\
filter(Game.game_id==PlayerGameStat.game_id).\
+ filter(Game.game_type_cd==GameType.game_type_cd).\
order_by(expr.desc(Game.game_id))
# the various filters provided get tacked on to the query