]> de.git.xonotic.org Git - xonotic/xonstat.git/blobdiff - xonstat/views/game.py
Clean up map view, show more on map_index page.
[xonotic/xonstat.git] / xonstat / views / game.py
index 44d9bb131481654253af87f1e2875e515d986669..822604f7f93003b29675dd8404d3cd64bd9ae557 100644 (file)
@@ -18,18 +18,19 @@ def _game_index_data(request):
     else:
         current_page = 1
 
-    games_q = DBSession.query(Game, Server, Map).\
+    games_q = DBSession.query(Game, Server, Map, GameType).\
             filter(Game.server_id == Server.server_id).\
             filter(Game.map_id == Map.map_id).\
+            filter(Game.game_type_cd == GameType.game_type_cd).\
             order_by(Game.game_id.desc())
 
     games = Page(games_q, current_page, items_per_page=10, url=page_url)
 
     pgstats = {}
-    for (game, server, map) in games:
+    for (game, server, map, gametype) in games:
         pgstats[game.game_id] = DBSession.query(PlayerGameStat).\
                 filter(PlayerGameStat.game_id == game.game_id).\
-                order_by(PlayerGameStat.rank).\
+                order_by(PlayerGameStat.scoreboardpos).\
                 order_by(PlayerGameStat.score).all()
 
     return {'games':games,
@@ -62,27 +63,33 @@ def _game_info_data(request):
     else:
         show_elo = False
 
+    if request.params.has_key('show_latency'):
+        show_latency = True
+    else:
+        show_latency = False
+
     try:
         notfound = False
 
-        (game, server, map) = DBSession.query(Game, Server, Map).\
+        (game, server, map, gametype) = DBSession.query(Game, Server, Map, GameType).\
                 filter(Game.game_id == game_id).\
                 filter(Game.server_id == Server.server_id).\
-                filter(Game.map_id == Map.map_id).one()
+                filter(Game.map_id == Map.map_id).\
+                filter(Game.game_type_cd == GameType.game_type_cd).one()
 
         pgstats = DBSession.query(PlayerGameStat).\
                 filter(PlayerGameStat.game_id == game_id).\
-                order_by(PlayerGameStat.rank).\
+                order_by(PlayerGameStat.scoreboardpos).\
                 order_by(PlayerGameStat.score).\
                 all()
 
         captimes = []
         if game.game_type_cd == 'ctf':
             for pgstat in pgstats:
-                if pgstat.fastest_cap is not None:
+                if pgstat.fastest is not None:
                     captimes.append(pgstat)
 
-            captimes = sorted(captimes, key=lambda x:x.fastest_cap)
+            captimes = sorted(captimes, key=lambda x:x.fastest)
 
         pwstats = {}
         for (pwstat, pgstat, weapon) in DBSession.query(PlayerWeaponStat, PlayerGameStat, Weapon).\
@@ -90,7 +97,7 @@ def _game_info_data(request):
                 filter(PlayerWeaponStat.weapon_cd == Weapon.weapon_cd).\
                 filter(PlayerWeaponStat.player_game_stat_id == \
                     PlayerGameStat.player_game_stat_id).\
-                order_by(PlayerGameStat.rank).\
+                order_by(PlayerGameStat.scoreboardpos).\
                 order_by(PlayerGameStat.score).\
                 order_by(Weapon.descr).\
                 all():
@@ -108,19 +115,23 @@ def _game_info_data(request):
         game = None
         server = None
         map = None
+        gametype = None
         pgstats = None
         pwstats = None
         captimes = None
         show_elo = False
+        show_latency = False
         raise inst
 
     return {'game':game,
             'server':server,
             'map':map,
+            'gametype':gametype,
             'pgstats':pgstats,
             'pwstats':pwstats,
             'captimes':captimes,
             'show_elo':show_elo,
+            'show_latency':show_latency,
             }