1 from calendar import timegm
3 from xonstat.util import html_colors, strip_colors, pretty_date, qfont_decode
7 def nick_html_colors(self, limit=None):
9 return "Anonymous Player"
11 return html_colors(self.nick, limit)
13 def nick_strip_colors(self):
15 return "Anonymous Player"
17 return strip_colors(self.nick)
19 def joined_pretty_date(self):
20 return pretty_date(self.create_dt)
23 return "<Player(%s, %s)>" % (self.player_id, self.nick.encode('utf-8'))
26 return {'player_id':self.player_id, 'nick':self.nick,
27 'joined':self.create_dt.strftime('%Y-%m-%dT%H:%M:%SZ'),
28 'active_ind':self.active_ind, 'location':self.location,
29 'stripped_nick':qfont_decode(self.stripped_nick)}
32 return timegm(self.create_dt.timetuple())
35 class PlayerAchievement(object):
37 return "<PlayerAchievement(%s, %s)>" % (self.player_id, self.achievement_cd)
40 return {'player_id':self.player_id, 'achievement_cd':self.achievement_cd}
43 class Hashkey(object):
44 def __init__(self, player_id=None, hashkey=None):
45 self.player_id = player_id
46 self.hashkey = hashkey
49 return "<Hashkey(%s, %s)>" % (self.player_id, self.hashkey)
52 return {'player_id':self.player_id, 'hashkey':self.hashkey}
55 class PlayerNick(object):
57 return "<PlayerNick(%s, %s)>" % (self.player_id, qfont_decode(self.stripped_nick))
60 return {'player_id':self.player_id, 'name':qfont_decode(self.stripped_nick)}
63 class PlayerElo(object):
64 def __init__(self, player_id=None, game_type_cd=None, elo=None):
66 self.player_id = player_id
67 self.game_type_cd = game_type_cd
73 return "<PlayerElo(pid=%s, gametype=%s, elo=%s, games=%s)>" % (self.player_id, self.game_type_cd, self.elo, self.games)
76 return {'player_id':self.player_id, 'game_type_cd':self.game_type_cd, 'elo':self.elo, 'games':self.games}
79 class PlayerRank(object):
81 def nick_html_colors(self, limit=None):
83 return "Anonymous Player"
85 return html_colors(self.nick, limit)
88 return "<PlayerRank(pid=%s, gametype=%s, rank=%s)>" % (self.player_id, self.game_type_cd, self.rank)
91 return {'player_id':self.player_id, 'game_type_cd':self.game_type_cd, 'rank':self.rank}
94 class PlayerCaptime(object):
95 def __init__(self, player_id=None, game_id=None, map_id=None,
96 fastest_cap=None, mod=None):
97 self.player_id = player_id
98 self.game_id = game_id
100 self.fastest_cap = fastest_cap
104 return "<PlayerCaptime(pid=%s, map_id=%s, mod=%s)>" % (self.player_id,
105 self.map_id, self.mod)
107 def fuzzy_date(self):
108 return pretty_date(self.create_dt)
111 return timegm(self.create_dt.timetuple())
114 class PlayerGroups(object):
115 def __init__(self, player_id=None, group_name=None):
116 self.player_id = player_id
117 self.group_name = group_name
120 return "<PlayerGroups(%s, %s)>" % (self.player_id, self.group_name)
123 class PlayerCapTime(object):
124 """Fastest flag capture times per player, assembled from a SQLAlchemy query"""
125 def __init__(self, row):
126 self.fastest_cap = row.fastest_cap
127 self.create_dt = row.create_dt
128 self.create_dt_epoch = timegm(row.create_dt.timetuple())
129 self.create_dt_fuzzy = pretty_date(row.create_dt)
130 self.player_id = row.player_id
131 self.game_id = row.game_id
132 self.map_id = row.map_id
133 self.map_name = row.map_name
134 self.server_id = row.server_id
135 self.server_name = row.server_name
139 "fastest_cap" : self.fastest_cap.total_seconds(),
140 "create_dt_epoch": self.create_dt_epoch,
141 "create_dt_fuzzy": self.create_dt_fuzzy,
142 "game_id":self.game_id,
143 "map_id": self.map_id,
144 "map_name": self.map_name,
145 "server_id": self.server_id,
146 "server_name": self.server_name,
150 class PlayerMedal(object):
152 return "<PlayerRank(pid=%s, place=%s, alt=%s)>" % (self.player_id,
153 self.place, self.alt)
156 class Achievement(object):
158 return "<Achievement(%s, %s, %s)>" % (self.achievement_cd, self.descr, self.limit)
161 return {'achievement_cd':self.achievement_cd, 'name':self.descr, 'limit':self.limit}