2 Models related to games.
5 from calendar import timegm
7 from xonstat.util import pretty_date, strip_colors, html_colors
15 def __init__(self, game_id=None, start_dt=None, game_type_cd=None,
16 server_id=None, map_id=None, winner=None):
17 self.game_id = game_id
18 self.start_dt = start_dt
19 self.game_type_cd = game_type_cd
20 self.server_id = server_id
25 return ("<Game({0.game_id}, {0.start_dt}, {0.game_type_cd}, {0.server_id})>".format(self))
29 'game_id': self.game_id,
30 'start': self.start_dt.strftime('%Y-%m-%dT%H:%M:%SZ'),
31 'game_type_cd': self.game_type_cd,
32 'server_id': self.server_id
36 return pretty_date(self.start_dt)
39 return timegm(self.start_dt.timetuple())
42 class PlayerGameStat(object):
44 The individual statistics a player has gained/lost during a game.
47 def __init__(self, player_game_stat_id=None, create_dt=None):
48 self.player_game_stat_id = player_game_stat_id
49 self.create_dt = create_dt
52 return "<PlayerGameStat({0.player_id}, {0.game_id}, {0.create_dt})>".format(self)
56 'player_id': self.player_id,
57 'game_id': self.game_id,
58 'create_dt': self.create_dt.strftime('%Y-%m-%dT%H:%M:%SZ'),
59 'alivetime': self.alivetime,
65 def nick_stripped(self):
67 return "Anonymous Player"
69 return strip_colors(self.nick)
71 def nick_html_colors(self, limit=None):
73 return "Anonymous Player"
75 return html_colors(self.nick, limit)
77 def team_html_color(self):
88 class PlayerWeaponStat(object):
90 The metrics for a single weapon in a game for a player.
93 def __init__(self, player_id=None, game_id=None, weapon_cd=None):
94 self.player_id = player_id
95 self.game_id = game_id
96 self.weapon_cd = weapon_cd
104 return ("<PlayerWeaponStat({0.player_weapon_stats_id}, {0.player_id}, {0.game_id})>"
109 'weapon_cd': self.weapon_cd,
110 'player_weapon_stats_id': self.player_weapon_stats_id,
111 'player_id': self.player_id,
112 'game_id': self.game_id,
116 'actual': self.actual,
121 class TeamGameStat(object):
126 def __init__(self, team_game_stat_id=None, create_dt=None):
127 self.team_game_stat_id = team_game_stat_id
128 self.create_dt = create_dt
131 return "<TeamGameStat({0.team_game_stat_id}, {0.game_id}, {0.team})>".format(self)
135 'team_game_stat_id': self.team_game_stat_id,
136 'game_id': self.game_id,
139 'rounds': self.rounds,
141 'create_dt': self.create_dt.strftime('%Y-%m-%dT%H:%M:%SZ'),
144 # TODO: move this function to util
145 def team_html_color(self):
156 class PlayerGameAnticheat(object):
158 Anticheat metrics sent by the server to identify odd patterns.
161 def __init__(self, player_id=None, game_id=None, key=None, value=None, create_dt=None):
162 self.player_id = player_id
163 self.game_id = game_id
166 self.create_dt = create_dt
169 return "<PlayerGameAnticheat({0.key}, {0.value})>".format(self)
172 class GameType(object):
174 A particular type of game.
178 return "<GameType({0.game_type_cd}, {0.descr}, {0.active_ind})>".format(self)
182 'game_type_cd': self.game_type_cd,
184 'active': self.active_ind,
188 class Weapon(object):
190 A particular type of weapon.
194 return "<Weapon({0.weapon_cd}, {0.descr}, {0.active_ind})>".format(self)
198 'weapon_cd': self.weapon_cd,
200 'active': self.active_ind,