From: Ant Zucaro Date: Fri, 20 Jan 2012 01:19:31 +0000 (-0500) Subject: Add ranks view based on game type. X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonstat.git;a=commitdiff_plain;h=1be837fea8fa3e48095a3ddf3fbfcce8cf7387e3;ds=sidebyside Add ranks view based on game type. --- diff --git a/xonstat/__init__.py b/xonstat/__init__.py index 7c4593c..9eb3599 100755 --- a/xonstat/__init__.py +++ b/xonstat/__init__.py @@ -61,6 +61,14 @@ def main(global_config, **settings): config.add_view(game_info, route_name="game_info", renderer="game_info.mako") + config.add_route("rank_index", "/ranks/{game_type_cd:ctf|dm|tdm|duel}") + config.add_view(rank_index, route_name="rank_index", + renderer="rank_index.mako") + + config.add_route("rank_index_paged", "/ranks/{game_type_cd:ctf|dm|tdm|duel}/page/{page:\d+}") + config.add_view(rank_index, route_name="rank_index_paged", + renderer="rank_index.mako") + # SERVER ROUTES config.add_route("server_index_paged", "/servers/page/{page:\d+}") config.add_view(server_index, route_name="server_index_paged", diff --git a/xonstat/templates/rank_index.mako b/xonstat/templates/rank_index.mako new file mode 100755 index 0000000..3ddb7f9 --- /dev/null +++ b/xonstat/templates/rank_index.mako @@ -0,0 +1,43 @@ +<%inherit file="base.mako"/> +<%namespace file="navlinks.mako" import="navlinks" /> + +<%block name="title"> +Rank Index - ${parent.title()} + + +% if not ranks: +

Sorry, no ranks yet. Get some buddies together and start playing!

+ +% else: +

+% if game_type_cd == 'dm': +Deathmatch +% elif game_type_cd == 'duel': +Duel +% elif game_type_cd == 'tdm': +Team Deathmatch +% elif game_type_cd == 'ctf': +Capture The Flag +% endif + +Rank Index

+ + + + + + +<% i = 1 %> +% for (rank, player) in ranks: + + + +<% i += 1 %> +% endfor +
RankNickElo
${i}${player.nick_html_colors()|n} + ${round(rank.elo, 3)} +
+ + +${navlinks("rank_index_paged", ranks.page, ranks.last_page)} +% endif diff --git a/xonstat/views/__init__.py b/xonstat/views/__init__.py index 9d89e60..87c5e76 100755 --- a/xonstat/views/__init__.py +++ b/xonstat/views/__init__.py @@ -1,6 +1,6 @@ from xonstat.views.submission import stats_submit from xonstat.views.player import player_index, player_info, player_game_index -from xonstat.views.game import game_index, game_info +from xonstat.views.game import game_index, game_info, rank_index from xonstat.views.map import map_info, map_index from xonstat.views.server import server_info, server_game_index, server_index from xonstat.views.search import * diff --git a/xonstat/views/game.py b/xonstat/views/game.py index 3706365..25ab408 100755 --- a/xonstat/views/game.py +++ b/xonstat/views/game.py @@ -93,3 +93,30 @@ def game_info(request): 'pgstats':pgstats, 'pwstats':pwstats, } + + +def rank_index(request): + """ + Provide a list of gametype ranks, paginated. + """ + if 'page' in request.matchdict: + current_page = request.matchdict['page'] + else: + current_page = 1 + + game_type_cd = request.matchdict['game_type_cd'] + + ranks_q = DBSession.query(PlayerElo, Player).\ + filter(PlayerElo.game_type_cd==game_type_cd).\ + filter(PlayerElo.player_id==Player.player_id).\ + order_by(PlayerElo.elo.desc()) + + ranks = Page(ranks_q, current_page, url=page_url) + + if len(ranks) == 0: + ranks = None + + return { + 'ranks':ranks, + 'game_type_cd':game_type_cd, + }