From 3fe5424f1d8b2d77050c90bbb4fa74131155be68 Mon Sep 17 00:00:00 2001 From: Ant Zucaro Date: Tue, 24 May 2011 14:24:00 -0400 Subject: [PATCH] Add a tabular accuracy view to the player info page. --- xonstat/templates/player_info.mako | 40 ++++++++++++++++++++++++++++++ xonstat/views.py | 20 ++++++++++++++- 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/xonstat/templates/player_info.mako b/xonstat/templates/player_info.mako index 561da17..df133d4 100755 --- a/xonstat/templates/player_info.mako +++ b/xonstat/templates/player_info.mako @@ -29,3 +29,43 @@ ${parent.title()} More games played by ${player.nick_html_colors()}... % endif + + +% if weapon_stats: +

Accuracy

+ + + + + + + + + + + +% for weapon_stat in weapon_stats: +<% +if weapon_stat[2] > 0: + damage_pct = round(float(weapon_stat[1])/weapon_stat[2]*100, 2) +else: + damage_pct = 0 +if weapon_stat[4] > 0: + hit_pct = round(float(weapon_stat[3])/weapon_stat[4]*100, 2) +else: + hit_pct = 0 +%> + + + + + + + + + + +% endfor +
WeaponHitFiredHit %Actual DamagePotential DamageDamage %
[IMAGE]${weapon_stat[0]}${weapon_stat[3]}${weapon_stat[4]}${hit_pct}%${weapon_stat[1]}${weapon_stat[2]}${damage_pct}%
+ +% endif diff --git a/xonstat/views.py b/xonstat/views.py index 36afef4..77ed150 100755 --- a/xonstat/views.py +++ b/xonstat/views.py @@ -38,6 +38,22 @@ def player_info(request): player_id = request.matchdict['id'] try: player = DBSession.query(Player).filter_by(player_id=player_id).one() + + weapon_stats = DBSession.query("descr", "actual_total", + "max_total", "hit_total", "fired_total", "frags_total").\ + from_statement( + "select cw.descr, sum(actual) actual_total, " + "sum(max) max_total, sum(hit) hit_total, " + "sum(fired) fired_total, sum(frags) frags_total " + "from xonstat.player_weapon_stats ws, xonstat.cd_weapon cw " + "where ws.weapon_cd = cw.weapon_cd " + "and player_id = :player_id " + "group by descr " + "order by descr" + ).params(player_id=player_id).all() + + log.debug(weapon_stats) + recent_games = DBSession.query(PlayerGameStat, Game, Server, Map).\ filter(PlayerGameStat.player_id == player_id).\ filter(PlayerGameStat.game_id == Game.game_id).\ @@ -47,9 +63,11 @@ def player_info(request): except Exception as e: player = None + weapon_stats = None recent_games = None return {'player':player, - 'recent_games':recent_games} + 'recent_games':recent_games, + 'weapon_stats':weapon_stats} def player_game_index(request): -- 2.39.2