]> de.git.xonotic.org Git - xonotic/xonstat.git/commitdiff
Clean up some of the queries to avoid from_statement. Change game_index and player_in...
authorAnt Zucaro <azucaro@gmail.com>
Thu, 19 May 2011 00:57:02 +0000 (20:57 -0400)
committerAnt Zucaro <azucaro@gmail.com>
Thu, 19 May 2011 00:57:02 +0000 (20:57 -0400)
xonstat/templates/game_index.mako
xonstat/templates/player_info.mako
xonstat/views.py

index 633ae749d1edc03e11089bc8a5b4951048c8db2c..7ecf25b047cb19ca068e511e015ffb2eeaea9853 100755 (executable)
@@ -16,7 +16,7 @@ Game Index - ${parent.title()}
 </ul>\r
 % endif\r
 \r
-% if games.last_page:\r
+% if games.previous_page:\r
 <a href="${request.route_url("game_index_paged", page=games.previous_page)}" name="Previous Page">Previous</a>\r
 % endif\r
 % if games.next_page:\r
index 6cf02f7b75fd5d60de572d8678864ad8b3f8912f..471741a42d7a35289548c72a4bee65b5a5070f08 100755 (executable)
@@ -22,8 +22,8 @@ ${parent.title()}
 % if recent_games:
 <h2>Recent Games</h2>
 <ul>
-% for (game_id, server_id, server_name, map_id, map_name) in recent_games:
-   <li>game <a href="${request.route_url("game_info", id=game_id)}" name="Game info page for game #${game_id}">#${game_id}:</a> <a href="${request.route_url("map_info", id=map_id)}" name="Map info page for ${map_name}">${map_name}</a> on <a href="${request.route_url("server_info", id=server_id)}" name="Server info page for ${server_name}">${server_name}</a></li>
+% for (gamestat, game, server, map) in recent_games:
+   <li>game <a href="${request.route_url("game_info", id=game.game_id)}" name="Game info page for game #${game.game_id}">#${game.game_id}:</a> <a href="${request.route_url("map_info", id=map.map_id)}" name="Map info page for ${map.name}">${map.name}</a> on <a href="${request.route_url("server_info", id=server.server_id)}" name="Server info page for ${server.name}">${server.name}</a></li>
 % endfor
 </ul>
 More games played by ${player.nick}...
index 30861629b422fa7b2c7c8bbb0be4956001103487..b85aaab8a6d2c74dd8050796943ec72894cecf2b 100755 (executable)
@@ -6,6 +6,7 @@ from pyramid.view import view_config
 from webhelpers.paginate import Page, PageURL
 
 from xonstat.models import *
+from xonstat.util import page_url
 from sqlalchemy.orm.exc import MultipleResultsFound, NoResultFound
 from sqlalchemy import desc
 
@@ -28,6 +29,7 @@ def main_index(request):
 @view_config(renderer='player_index.mako')
 def player_index(request):
     players = DBSession.query(Player)
+
     log.debug("testing logging; entered PlayerHandler.index()")
     return {'players':players}
 
@@ -36,33 +38,25 @@ def player_info(request):
     player_id = request.matchdict['id']
     try:
         player = DBSession.query(Player).filter_by(player_id=player_id).one()
-        recent_games = DBSession.query("game_id", "server_id", "server_name", 
-                "map_id", "map_name").\
-                from_statement("select g.game_id, s.server_id, "
-                        "s.name as server_name, m.map_id, m.name as map_name "
-                        "from player_game_stats gs, games g, servers s, maps m "
-                        "where gs.player_id=:player_id "
-                        "and gs.game_id = g.game_id "
-                        "and g.server_id = s.server_id "
-                        "and g.map_id = m.map_id "
-                        "order by g.start_dt desc "
-                        "limit 10 offset 1").\
-                        params(player_id=player_id).all()
+        recent_games = DBSession.query(PlayerGameStat, Game, Server, Map).\
+                filter(PlayerGameStat.player_id == player_id).\
+                filter(PlayerGameStat.game_id == Game.game_id).\
+                filter(Game.server_id == Server.server_id).\
+                filter(Game.map_id == Map.map_id).\
+                order_by(Game.game_id.desc())[0:10]
 
         log.debug(recent_games)
     except Exception as e:
         player = None
         recent_games = None
-    return {'player':player, 'recent_games':recent_games}
+    return {'player':player, 
+            'recent_games':recent_games}
 
 
 ##########################################################################
 # This is the game views area - only views pertaining to Xonotic
 # games and their related information goes here
 ##########################################################################
-def page_url(page):
-    return current_route_url(request, page=page, _query=request.GET)
-
 def game_index(request):
     if 'page' in request.matchdict:
         current_page = request.matchdict['page']