]> de.git.xonotic.org Git - xonotic/xonstat.git/blobdiff - xonstat/views/player.py
Add server index and template. Fix links on player index and template.
[xonotic/xonstat.git] / xonstat / views / player.py
index debe810de642ea379deb9501e2840a78bb406c1f..c9e5290411d7185c68ab4cc338b30a7f2a49e0c4 100755 (executable)
@@ -15,9 +15,24 @@ def player_index(request):
     """\r
     Provides a list of all the current players. \r
     """\r
-    players = DBSession.query(Player)\r
+    if 'page' in request.matchdict:\r
+        current_page = request.matchdict['page']\r
+    else:\r
+        current_page = 1\r
+\r
+    try:\r
+        player_q = DBSession.query(Player).\\r
+                filter(Player.player_id > 2).\\r
+                order_by(Player.player_id)\r
+\r
+        players = Page(player_q, current_page, url=page_url)\r
+\r
+        \r
+    except Exception as e:\r
+        players = None\r
+\r
+    return {'players':players, }\r
 \r
-    return {'players':players}\r
 \r
 def player_info(request):\r
     """\r
@@ -47,13 +62,54 @@ def player_info(request):
                 filter(Game.map_id == Map.map_id).\\r
                 order_by(Game.game_id.desc())[0:10]\r
 \r
+        game_stats = {}\r
+        (game_stats['avg_rank'], game_stats['total_kills'], \r
+                game_stats['total_deaths'], game_stats['total_suicides'], \r
+                game_stats['total_score'], game_stats['total_time'], \r
+                game_stats['total_held'], game_stats['total_captures'], \r
+                game_stats['total_pickups'],game_stats['total_drops'], \r
+                game_stats['total_returns'], game_stats['total_collects'], \r
+                game_stats['total_destroys'], game_stats['total_dhk'], \r
+                game_stats['total_pushes'], game_stats['total_pushed'], \r
+                game_stats['total_carrier_frags'], \r
+                game_stats['total_alivetime'],\r
+                game_stats['total_games_played']) = DBSession.\\r
+                        query("avg_rank", "total_kills", "total_deaths", \r
+                "total_suicides", "total_score", "total_time", "total_held",\r
+                "total_captures", "total_pickups", "total_drops", \r
+                "total_returns", "total_collects", "total_destroys", \r
+                "total_dhk", "total_pushes", "total_pushed", \r
+                "total_carrier_frags", "total_alivetime", \r
+                "total_games_played").\\r
+                from_statement(\r
+                    "select round(avg(rank)) avg_rank, sum(kills) total_kills, "\r
+                    "sum(deaths) total_deaths, sum(suicides) total_suicides, "\r
+                    "sum(score) total_score, sum(time) total_time, "\r
+                    "sum(held) total_held, sum(captures) total_captures, "\r
+                    "sum(pickups) total_pickups, sum(drops) total_drops, "\r
+                    "sum(returns) total_returns, sum(collects) total_collects, "\r
+                    "sum(destroys) total_destroys, sum(destroys_holding_key) total_dhk, "\r
+                    "sum(pushes) total_pushes, sum(pushed) total_pushed, "\r
+                    "sum(carrier_frags) total_carrier_frags, "\r
+                    "sum(alivetime) total_alivetime, count(*) total_games_played "\r
+                    "from player_game_stats "\r
+                    "where player_id=:player_id"\r
+                ).params(player_id=player_id).one()\r
+\r
+        for (key,value) in game_stats.items():\r
+            if value == None:\r
+                game_stats[key] = '-'\r
+\r
     except Exception as e:\r
         player = None\r
         weapon_stats = None\r
+        game_stats = None\r
         recent_games = None\r
+\r
     return {'player':player, \r
             'recent_games':recent_games,\r
-            'weapon_stats':weapon_stats}\r
+            'weapon_stats':weapon_stats,\r
+            'game_stats':game_stats}\r
 \r
 \r
 def player_game_index(request):\r