From c299ab2458617817c6325493aea65806abfbd24b Mon Sep 17 00:00:00 2001 From: Ant Zucaro Date: Thu, 3 Nov 2011 13:09:16 -0400 Subject: [PATCH] Add top scorers to the server_info view and template. --- xonstat/templates/server_info.mako | 29 +++++++++++++++++++++++++++++ xonstat/views/server.py | 20 ++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/xonstat/templates/server_info.mako b/xonstat/templates/server_info.mako index 6ce7b58..5093d29 100755 --- a/xonstat/templates/server_info.mako +++ b/xonstat/templates/server_info.mako @@ -67,6 +67,35 @@ Created: ${server.create_dt.strftime('%m/%d/%Y at %I:%M %p')}
+##### TOP SCORERS ##### +
+

Top Scoring Players

+ + + + + + + + + + <% i = 1 %> + % for (score_player_id, score_nick, score_value) in top_scorers: + + + % if score_player_id != '-': + + % else: + + % endif + + + <% i = i+1 %> + % endfor + +
#NickScore
${i}${score_nick|n}${score_nick}${score_value}
+
+ ##### TOP PLAYERS #####
diff --git a/xonstat/views/server.py b/xonstat/views/server.py index 0a2dac7..a706dc2 100755 --- a/xonstat/views/server.py +++ b/xonstat/views/server.py @@ -68,6 +68,25 @@ def server_info(request): for i in range(leaderboard_count-len(top_maps)): top_maps.append(('-', '-', '-')) + # top players by score + top_scorers = DBSession.query(Player.player_id, Player.nick, + func.sum(PlayerGameStat.score)).\ + filter(Player.player_id == PlayerGameStat.player_id).\ + filter(Game.game_id == PlayerGameStat.game_id).\ + filter(Game.server_id == server.server_id).\ + filter(Player.player_id > 2).\ + filter(PlayerGameStat.create_dt > + (datetime.now() - timedelta(days=leaderboard_lifetime))).\ + order_by(expr.desc(func.sum(PlayerGameStat.score))).\ + group_by(Player.nick).\ + group_by(Player.player_id).all()[0:10] + + top_scorers = [(player_id, html_colors(nick), score) \ + for (player_id, nick, score) in top_scorers] + + for i in range(leaderboard_count-len(top_scorers)): + top_scorers.append(('-', '-', '-')) + # top players by playing time top_players = DBSession.query(Player.player_id, Player.nick, func.sum(PlayerGameStat.alivetime)).\ @@ -107,6 +126,7 @@ def server_info(request): return {'server':server, 'recent_games':recent_games, 'top_players': top_players, + 'top_scorers': top_scorers, 'top_maps': top_maps, } -- 2.39.2