From ff5bb884f8c8aa96ad512f613a8d4b133d8b172a Mon Sep 17 00:00:00 2001 From: Ant Zucaro Date: Wed, 7 Dec 2011 12:52:32 -0500 Subject: [PATCH] Add pagination and fuzzy date to the player_index. Pagination should be - (page of ). The pretty date is using the same one from util.py, so we get something like "a few days ago". --- xonstat/models.py | 3 +++ xonstat/static/css/style.css | 6 ++++++ xonstat/templates/player_index.mako | 18 +++++++++++++++--- xonstat/views/player.py | 17 ++++++++++++++--- 4 files changed, 38 insertions(+), 6 deletions(-) diff --git a/xonstat/models.py b/xonstat/models.py index 0dcda1f..23d4a41 100755 --- a/xonstat/models.py +++ b/xonstat/models.py @@ -22,6 +22,9 @@ class Player(object): else: return strip_colors(self.nick) + def joined_pretty_date(self): + return pretty_date(self.create_dt) + def __repr__(self): return "" % (self.player_id, self.nick.encode('utf-8')) diff --git a/xonstat/static/css/style.css b/xonstat/static/css/style.css index c275ff6..a5b3e6c 100755 --- a/xonstat/static/css/style.css +++ b/xonstat/static/css/style.css @@ -191,6 +191,12 @@ input { font-family: 'Xolonium', 'Arial', 'Helvetica'; } text-align:center; } +/* pagination */ +.pagination { + padding-right: 8px; +} + + /* drop-down navigation */ .nav, .nav ul { list-style: none; diff --git a/xonstat/templates/player_index.mako b/xonstat/templates/player_index.mako index b8a68c7..15f3a05 100755 --- a/xonstat/templates/player_index.mako +++ b/xonstat/templates/player_index.mako @@ -17,15 +17,27 @@ Player Index - ${parent.title()} % for player in players: ${player.nick_html_colors()|n} - ${player.create_dt.strftime('%m/%d/%Y at %H:%M')} + ${player.joined_pretty_date()} % endfor % endif + + + % if players.previous_page: -Previous + % endif + +% for page in pages_to_link: + +% endfor + % if players.next_page: -Next + % endif + + + +(Page ${players.page} of ${players.last_page}) diff --git a/xonstat/views/player.py b/xonstat/views/player.py index 239cf06..96c8990 100755 --- a/xonstat/views/player.py +++ b/xonstat/views/player.py @@ -1,8 +1,10 @@ import datetime import logging import re +import sqlalchemy as sa import time from pyramid.response import Response +from pyramid.url import current_route_url from sqlalchemy import desc from webhelpers.paginate import Page, PageURL from xonstat.models import * @@ -16,22 +18,31 @@ def player_index(request): Provides a list of all the current players. """ if 'page' in request.matchdict: - current_page = request.matchdict['page'] + current_page = int(request.matchdict['page']) else: current_page = 1 try: player_q = DBSession.query(Player).\ filter(Player.player_id > 2).\ + filter(sa.not_(Player.nick.like('Anonymous Player%'))).\ order_by(Player.player_id.desc()) players = Page(player_q, current_page, url=page_url) - + last_linked_page = current_page + 4 + if last_linked_page > players.last_page: + last_linked_page = players.last_page + + pages_to_link = range(current_page+1, last_linked_page+1) + except Exception as e: players = None + raise e - return {'players':players, } + return {'players':players, + 'pages_to_link':pages_to_link, + } def player_info(request): -- 2.39.2