]> de.git.xonotic.org Git - xonotic/xonstat.git/blobdiff - xonstat/views/player.py
Add pagination and fuzzy date to the player_index.
[xonotic/xonstat.git] / xonstat / views / player.py
index 239cf064557db803209137730ba525de8456bcf7..96c8990f283cf610bcbce6c261ea9cda61368b28 100755 (executable)
@@ -1,8 +1,10 @@
 import datetime\r
 import logging\r
 import re\r
+import sqlalchemy as sa\r
 import time\r
 from pyramid.response import Response\r
+from pyramid.url import current_route_url\r
 from sqlalchemy import desc\r
 from webhelpers.paginate import Page, PageURL\r
 from xonstat.models import *\r
@@ -16,22 +18,31 @@ def player_index(request):
     Provides a list of all the current players. \r
     """\r
     if 'page' in request.matchdict:\r
-        current_page = request.matchdict['page']\r
+        current_page = int(request.matchdict['page'])\r
     else:\r
         current_page = 1\r
 \r
     try:\r
         player_q = DBSession.query(Player).\\r
                 filter(Player.player_id > 2).\\r
+                filter(sa.not_(Player.nick.like('Anonymous Player%'))).\\r
                 order_by(Player.player_id.desc())\r
 \r
         players = Page(player_q, current_page, url=page_url)\r
 \r
-        \r
+        last_linked_page = current_page + 4\r
+        if last_linked_page > players.last_page:\r
+            last_linked_page = players.last_page\r
+\r
+        pages_to_link = range(current_page+1, last_linked_page+1)\r
+\r
     except Exception as e:\r
         players = None\r
+        raise e\r
 \r
-    return {'players':players, }\r
+    return {'players':players,\r
+            'pages_to_link':pages_to_link,\r
+            }\r
 \r
 \r
 def player_info(request):\r