2 Models related to the main index page.
6 from xonstat.util import html_colors
9 class SummaryStat(object):
11 The high level summary line that is shown on the main page.
15 return ("<SummaryStat(total_players={0.total_players}, total_games={0.total_games}, "
16 "total_servers={0.total_servers})>".format(self))
19 class ActivePlayer(object):
21 A record in the "Most Active Players" list.
24 def __init__(self, sort_order=None, player_id=None, nick=None, alivetime=None):
25 self.sort_order = sort_order
26 self.player_id = player_id
28 self.alivetime = alivetime
30 def nick_html_colors(self):
31 return html_colors(self.nick)
34 return "<ActivePlayer({0.sort_order}, {0.player_id})>".format(self)
37 class ActiveServer(object):
39 A record in the "Most Active Servers" list.
42 def __init__(self, sort_order=None, server_id=None, server_name=None, play_time=None):
43 self.sort_order = sort_order
44 self.server_id = server_id
45 self.server_name = server_name
46 self.play_time = play_time
48 def play_time_str(self, max_segments=3):
49 if not self.play_time:
52 days, seconds = divmod(self.play_time.total_seconds(), 60*60*24)
53 hours, seconds = divmod(seconds, 60*60)
54 mins, seconds = divmod(seconds, 60)
57 if days > 0 and len(parts) < max_segments:
58 parts.append("{}d".format(int(days)))
60 if hours > 0 and len(parts) < max_segments:
66 parts.append("{}{}h".format(prefix, int(hours)))
68 if mins > 0 and len(parts) < max_segments:
74 parts.append("{}{}m".format(prefix, int(mins)))
79 return "<ActiveServer({0.sort_order}, {0.server_id})>".format(self)
82 class ActiveMap(object):
84 A record in the "Most Active Maps" list.
87 def __init__(self, sort_order=None, map_id=None, map_name=None, games=None):
88 self.sort_order = sort_order
90 self.map_name = map_name
94 return "<ActiveMap({0.sort_order}, {0.map_id})>".format(self)