From: Ant Zucaro Date: Thu, 19 May 2011 20:15:34 +0000 (-0400) Subject: Add player_game_index view, route, and template. It shows the recent games (paged... X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=093f265a6a353cdb51f79c63420912877379f82b;p=xonotic%2Fxonstat.git Add player_game_index view, route, and template. It shows the recent games (paged) for a given player_id! --- diff --git a/xonstat/__init__.py b/xonstat/__init__.py index 80f06ae..1f94149 100755 --- a/xonstat/__init__.py +++ b/xonstat/__init__.py @@ -25,9 +25,15 @@ def main(global_config, **settings): config.add_route(name="main_index", pattern="/", view=main_index, renderer='index.jinja2') + # PLAYER ROUTES + config.add_route(name="player_game_index", + pattern="/player/{player_id:\d+}/games/page/{page:\d+}", + view=player_game_index, renderer='player_game_index.mako') + config.add_route(name="player_info", pattern="/player/{id:\d+}", view=player_info, renderer='player_info.mako') + # GAME ROUTES config.add_route(name="game_index", pattern="/games", view=game_index, renderer='game_index.mako') @@ -37,6 +43,7 @@ def main(global_config, **settings): config.add_route(name="game_info", pattern="/game/{id:\d+}", view=game_info, renderer='game_info.mako') + # SERVER ROUTES config.add_route(name="server_game_index", pattern="/server/{server_id:\d+}/games/page/{page:\d+}", view=server_game_index, renderer='server_game_index.mako') @@ -44,6 +51,7 @@ def main(global_config, **settings): config.add_route(name="server_info", pattern="/server/{id:\d+}", view=server_info, renderer='server_info.mako') + # MAP ROUTES config.add_route(name="map_info", pattern="/map/{id:\d+}", view=map_info, renderer='map_info.mako') diff --git a/xonstat/templates/player_game_index.mako b/xonstat/templates/player_game_index.mako new file mode 100755 index 0000000..3cbbf68 --- /dev/null +++ b/xonstat/templates/player_game_index.mako @@ -0,0 +1,24 @@ +<%inherit file="base.mako"/> + +<%block name="title"> +Player Game Index for ${player.nick} - ${parent.title()} + + +% if not games: +

Sorry, no games yet. Get playing, scrub!

+ +% else: +

Recent Games by ${player.nick}

+ +% endif + +% if games.previous_page: +Previous +% endif +% if games.next_page: +Next +% endif diff --git a/xonstat/views.py b/xonstat/views.py index bc72224..53f6433 100755 --- a/xonstat/views.py +++ b/xonstat/views.py @@ -53,6 +53,34 @@ def player_info(request): 'recent_games':recent_games} +def player_game_index(request): + player_id = request.matchdict['player_id'] + current_page = request.matchdict['page'] + + 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 = Page(games_q, current_page, url=page_url) + + log.debug(games) + log.debug(player) + + except Exception as e: + player = None + games = None + raise e + + return {'player':player, + 'games':games} + + ########################################################################## # This is the game views area - only views pertaining to Xonotic # games and their related information goes here