From cd3addd83187091bc635916d94e84cc12175aaf5 Mon Sep 17 00:00:00 2001 From: Ant Zucaro Date: Mon, 20 Feb 2012 11:34:09 -0500 Subject: [PATCH] Fix "more games played by player page. --- xonstat/__init__.py | 11 ++++---- xonstat/templates/player_game_index.mako | 35 +++++++++++++++--------- xonstat/templates/player_info.mako | 2 +- xonstat/views/player.py | 29 ++++++++++++-------- 4 files changed, 46 insertions(+), 31 deletions(-) diff --git a/xonstat/__init__.py b/xonstat/__init__.py index 9eb3599..d47c365 100755 --- a/xonstat/__init__.py +++ b/xonstat/__init__.py @@ -27,14 +27,15 @@ def main(global_config, **settings): renderer="main_index.mako") # PLAYER ROUTES - config.add_route("player_game_index_default", - "/player/{player_id:\d+}/games") - config.add_view(player_game_index, route_name="player_game_index_default", + config.add_route("player_game_index_paged", + "/player/{player_id:\d+}/games/page/{page:\d+}") + config.add_view(player_game_index, route_name="player_game_index_paged", renderer="player_game_index.mako") config.add_route("player_game_index", - "/player/{player_id:\d+}/games/page/{page:\d+}") - config.add_view(player_game_index, renderer="player_game_index.mako") + "/player/{player_id:\d+}/games") + config.add_view(player_game_index, route_name="player_game_index", + renderer="player_game_index.mako") config.add_route("player_index_paged", "/players/page/{page:\d+}") config.add_view(player_index, route_name="player_index_paged", diff --git a/xonstat/templates/player_game_index.mako b/xonstat/templates/player_game_index.mako index 60cbd3d..d667f1b 100755 --- a/xonstat/templates/player_game_index.mako +++ b/xonstat/templates/player_game_index.mako @@ -1,23 +1,32 @@ <%inherit file="base.mako"/> +<%namespace name="nav" file="nav.mako" /> +<%namespace file="scoreboard.mako" import="scoreboard" /> +<%namespace file="navlinks.mako" import="navlinks" /> + +<%block name="navigation"> +${nav.nav('games')} + <%block name="title"> -Player Game Index for ${player.nick_html_colors()|n} - ${parent.title()} +Game Index % if not games: -

Sorry, no games yet. Get playing, scrub!

+

Sorry, no games yet. Get playing!

% else: -

Recent Games by ${player.nick_html_colors()|n}

-% for (playergamestat, game, server, map) in games: -
  • #${game.game_id}: ${map.name}
  • -% endfor -
    -% endif +
    +
    +

    Recent Games

    + % for (game, server, map) in games: +
    +

    ${map.name} on ${server.name} (permalink)

    + ${scoreboard(game.game_type_cd, pgstats[game.game_id])} +
    + % endfor +
    +
    -% if games.previous_page: -Previous -% endif -% if games.next_page: -Next + +${navlinks("player_game_index_paged", games.page, games.last_page, player_id=player_id)} % endif diff --git a/xonstat/templates/player_info.mako b/xonstat/templates/player_info.mako index ba4a84b..528e736 100755 --- a/xonstat/templates/player_info.mako +++ b/xonstat/templates/player_info.mako @@ -124,7 +124,7 @@ Player Information % if game_stats['total_games_played'] > 10: - More games played by ${player.nick_html_colors()|n}... + More games played by ${player.nick_html_colors()|n}... % endif diff --git a/xonstat/views/player.py b/xonstat/views/player.py index 6b9c63b..fedb99b 100755 --- a/xonstat/views/player.py +++ b/xonstat/views/player.py @@ -28,7 +28,7 @@ def player_index(request): filter(sa.not_(Player.nick.like('Anonymous Player%'))).\ order_by(Player.player_id.desc()) - players = Page(player_q, current_page, url=page_url) + players = Page(player_q, current_page, items_per_page=10, url=page_url) last_linked_page = current_page + 4 if last_linked_page > players.last_page: @@ -140,21 +140,26 @@ def player_game_index(request): current_page = 1 try: - player = DBSession.query(Player).filter_by(player_id=player_id).one() - - games_q = 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()) + games_q = DBSession.query(Game, Server, Map).\ + filter(PlayerGameStat.game_id == Game.game_id).\ + filter(PlayerGameStat.player_id == player_id).\ + filter(Game.server_id == Server.server_id).\ + filter(Game.map_id == Map.map_id).\ + order_by(Game.game_id.desc()) games = Page(games_q, current_page, url=page_url) - + pgstats = {} + for (game, server, map) in games: + pgstats[game.game_id] = DBSession.query(PlayerGameStat).\ + filter(PlayerGameStat.game_id == game.game_id).\ + order_by(PlayerGameStat.rank).\ + order_by(PlayerGameStat.score).all() + except Exception as e: player = None games = None - return {'player':player, - 'games':games} + return {'player_id':player_id, + 'games':games, + 'pgstats':pgstats} -- 2.39.2