From: Ant Zucaro <azucaro@gmail.com> Date: Thu, 19 May 2011 00:57:02 +0000 (-0400) Subject: Clean up some of the queries to avoid from_statement. Change game_index and player_in... X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=981b410b7f434aaa353b390afc3c231440b25444;p=xonotic%2Fxonstat.git Clean up some of the queries to avoid from_statement. Change game_index and player_info templates to handle objects instead. --- diff --git a/xonstat/templates/game_index.mako b/xonstat/templates/game_index.mako index 633ae74..7ecf25b 100755 --- a/xonstat/templates/game_index.mako +++ b/xonstat/templates/game_index.mako @@ -16,7 +16,7 @@ Game Index - ${parent.title()} </ul> % endif -% if games.last_page: +% if games.previous_page: <a href="${request.route_url("game_index_paged", page=games.previous_page)}" name="Previous Page">Previous</a> % endif % if games.next_page: diff --git a/xonstat/templates/player_info.mako b/xonstat/templates/player_info.mako index 6cf02f7..471741a 100755 --- a/xonstat/templates/player_info.mako +++ b/xonstat/templates/player_info.mako @@ -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}... diff --git a/xonstat/views.py b/xonstat/views.py index 3086162..b85aaab 100755 --- a/xonstat/views.py +++ b/xonstat/views.py @@ -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']