]> git.xonotic.org Git - xonotic/xonstat.git/commitdiff
Make pagination a GET parameter, not part of the URL.
authorAnt Zucaro <azucaro@gmail.com>
Mon, 14 May 2012 20:55:51 +0000 (16:55 -0400)
committerAnt Zucaro <azucaro@gmail.com>
Mon, 14 May 2012 20:55:51 +0000 (16:55 -0400)
It was not the best idea to add the 'page' displayed to be an actual
part of the URL. It should be a GET parameter instead, which jives
a little better with my understanding of REST-like resources. This
changes all paginated views to use a GET parameter and also limits
results returned to 10 per page for performance and viewability
reasons.

xonstat/templates/game_index.mako
xonstat/templates/map_index.mako
xonstat/templates/navlinks.mako
xonstat/templates/player_index.mako
xonstat/templates/search.mako
xonstat/templates/server_index.mako
xonstat/views/game.py
xonstat/views/map.py
xonstat/views/player.py
xonstat/views/search.py
xonstat/views/server.py

index f9d11de0cbd71e201a2ccad65e291b4f3b344d48..ecff992c6615638341218f846a3a22b50aa036df 100755 (executable)
@@ -28,6 +28,6 @@ Game Index
 </div>\r
 \r
 <!-- navigation links -->\r
-${navlinks("game_index_paged", games.page, games.last_page)}\r
+${navlinks("game_index", games.page, games.last_page)}\r
 % endif\r
 \r
index c6ae6b62c835d99071614b2604ab5be04270dc4f..fe34956f18c4a247b710435470d4b40c81668862 100755 (executable)
@@ -37,6 +37,6 @@ Map Index
     % endif\r
 \r
     <!-- navigation links -->\r
-    ${navlinks("map_index_paged", maps.page, maps.last_page)}\r
+    ${navlinks("map_index", maps.page, maps.last_page)}\r
   </div> <!-- /span4 -->\r
 </div> <!-- /row -->\r
index acfb1669e83fa6f4f6d1322756954cc16d03176c..5c1fa4fae06a36f1a8f2d54667bc3f6b5ce2229d 100755 (executable)
@@ -1,7 +1,15 @@
 <%def name="navlinks(view, curr, last, **kwargs)">
+<%
+kwargs['_query'] = {'page': None}
+
+if 'search_query' in kwargs.keys():
+    kwargs['_query'] = dict(kwargs['_query'].items() + kwargs['search_query'].items())
+%>
+
 % if not (curr == last and curr == 1):
     % if curr != 1:
-            <a class="pagination" href="${request.route_url(view, page=curr-1, **kwargs)}" name="Previous Page">previous</a>
+            <% kwargs['_query']['page'] = curr-1 %>
+            <a class="pagination" href="${request.route_url(view, **kwargs)}" name="Previous Page">previous</a>
     % endif
 
     % if last < 8:
             ${link_page(view, i, curr, **kwargs)}
             % endfor
             <span class="pagination">...</span>
-            <a class="pagination" href="${request.route_url(view, page=last, **kwargs)}" name="Last Page">${last}</a>
+            <% kwargs['_query']['page'] = last %>
+            <a class="pagination" href="${request.route_url(view, **kwargs)}" name="Last Page">${last}</a>
 
         % elif last-curr < 6:
-            <a class="pagination" href="${request.route_url(view, page=1, **kwargs)}" name="First Page">1</a>
+            <% kwargs['_query']['page'] = 1 %>
+            <a class="pagination" href="${request.route_url(view, **kwargs)}" name="First Page">1</a>
             <span class="pagination">...</span>
             % for i in range(last-5, last+1):
             ${link_page(view, i, curr, **kwargs)}
             % endfor
         % else:
-            <a class="pagination" href="${request.route_url(view, page=1, **kwargs)}" name="First Page">1</a>
+            <% kwargs['_query']['page'] = 1 %>
+            <a class="pagination" href="${request.route_url(view, **kwargs)}" name="First Page">1</a>
 
             <span class="pagination">...</span>
             % for i in range(curr-2, curr+3):
             ${link_page(view, i, curr, **kwargs)}
             % endfor
             <span class="pagination">...</span>
-            <a class="pagination" href="${request.route_url(view, page=last, **kwargs)}" name="Last Page">${last}</a>
+            <% kwargs['_query']['page'] = last %>
+            <a class="pagination" href="${request.route_url(view, **kwargs)}" name="Last Page">${last}</a>
 
         % endif
     % endif
 
     % if curr != last:
-        <a class="pagination" href="${request.route_url(view, page=curr+1, **kwargs)}" name="Next Page">next</a>
+            <% kwargs['_query']['page'] = curr+1 %>
+        <a class="pagination" href="${request.route_url(view, **kwargs)}" name="Next Page">next</a>
     % endif
 % endif
 </%def>
@@ -45,6 +58,7 @@
 % if page_num == curr_page:
 <span class="pagination" style="color:#d95b00;">${page_num}</span>
 % else:
-    <a class="pagination" href="${request.route_url(view, page=page_num, **kwargs)}" name="Go to page ${page_num}">${page_num}</a>
+    <% kwargs['_query']['page'] = page_num %>
+    <a class="pagination" href="${request.route_url(view, **kwargs)}" name="Go to page ${page_num}">${page_num}</a>
 % endif
 </%def>
index 44e5fbbc875b997cf9d00336fd12c0b0ec785ee2..6bfdc7d1a7615df26804a3406d9da4e54525cb16 100755 (executable)
@@ -35,6 +35,6 @@ Player Index
     </table>\r
 % endif\r
 \r
-    ${navlinks("player_index_paged", players.page, players.last_page)}\r
+    ${navlinks("player_index", players.page, players.last_page)}\r
   </div> <!-- /span4 -->\r
 </div> <!-- /row -->\r
index 3c4f79409b1d9347308cd3c306705e2dfffe3c5e..a7d54547f9947b5dba33df6d3fe7033f0018b8f8 100755 (executable)
 % endif
 
 <!-- navigation links -->
-${navlinks("search_paged", results.page, results.last_page, _query=query)}
+${navlinks("search", results.page, results.last_page, search_query=query)}
 % endif
 
 <%block name="js">
index 9ec0b3895d54471f6138611e476175a1796ce926..d6893cdd201f8b5f877e376c60534fe62f099e5b 100755 (executable)
@@ -35,6 +35,6 @@ Server Index
     </table>\r
     % endif\r
 \r
-    ${navlinks("server_index_paged", servers.page, servers.last_page)}\r
+    ${navlinks("server_index", servers.page, servers.last_page)}\r
   </div> <!-- /span4 -->\r
 </div> <!-- /row -->\r
index 1ce8a9ac74e5aeb164118a44db9da532f6427d66..4b8bdbf30c26451d0ab9bb9eb350c234e3b8ea73 100755 (executable)
@@ -17,8 +17,8 @@ def game_index(request):
     These games are ordered by game_id, with the most current ones first.\r
     Paginated.\r
     """\r
-    if 'page' in request.matchdict:\r
-        current_page = request.matchdict['page']\r
+    if request.params.has_key('page'):\r
+        current_page = request.params['page']\r
     else:\r
         current_page = 1\r
 \r
@@ -27,7 +27,7 @@ def game_index(request):
             filter(Game.map_id == Map.map_id).\\r
             order_by(Game.game_id.desc())\r
 \r
-    games = Page(games_q, current_page, url=page_url)\r
+    games = Page(games_q, current_page, items_per_page=10, url=page_url)\r
 \r
     pgstats = {}\r
     for (game, server, map) in games:\r
index fff321f9e3af10b6c25210822b58fa03e505ed40..66c524b880486f4ba147aaddf953e6eb91fd91c8 100755 (executable)
@@ -14,8 +14,8 @@ def map_index(request):
     """\r
     Provides a list of all the current maps. \r
     """\r
-    if 'page' in request.matchdict:\r
-        current_page = request.matchdict['page']\r
+    if request.params.has_key('page'):\r
+        current_page = request.params['page']\r
     else:\r
         current_page = 1\r
 \r
@@ -23,9 +23,8 @@ def map_index(request):
         map_q = DBSession.query(Map).\\r
                 order_by(Map.map_id.desc())\r
 \r
-        maps = Page(map_q, current_page, url=page_url)\r
+        maps = Page(map_q, current_page, items_per_page=10, url=page_url)\r
 \r
-        \r
     except Exception as e:\r
         maps = None\r
 \r
index c20a61894982b7c790ece948815f5e681acc04ac..5d67fb9c937c70ba3050ceb7799b26c1d6f9982b 100755 (executable)
@@ -19,8 +19,8 @@ def player_index(request):
     """\r
     Provides a list of all the current players. \r
     """\r
-    if 'page' in request.matchdict:\r
-        current_page = int(request.matchdict['page'])\r
+    if request.params.has_key('page'):\r
+        current_page = request.params['page']\r
     else:\r
         current_page = 1\r
 \r
@@ -33,19 +33,12 @@ def player_index(request):
 \r
         players = Page(player_q, current_page, items_per_page=10, url=page_url)\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
-            'pages_to_link':pages_to_link,\r
-            }\r
+    return {'players':players\r
+           }\r
 \r
 \r
 def get_games_played(player_id):\r
index 3e16e77a8e21d21c50d28c7c5b433e267ae72e0b..8ce22004995080f869df9aa4b5219c193cefecad 100755 (executable)
@@ -85,8 +85,9 @@ def search(request):
     query = None
     _query = {}
 
-    if 'page' in request.matchdict:
-        current_page = request.matchdict['page']
+
+    if request.params.has_key('page'):
+        current_page = request.params['page']
     else:
         current_page = 1
 
@@ -134,7 +135,7 @@ def search(request):
 
         try:
             if q != None:
-                results = Page(q, current_page, url=page_url)
+                results = Page(q, current_page, items_per_page=10, url=page_url)
         except Exception as e:
             raise e
             result_type = None
index 8e4a7c6d976f8c536bca8a4f80dc7b0b4d966b79..daa9885948f15f15fd27f23f5c58885fe73c3456 100755 (executable)
@@ -15,8 +15,8 @@ def server_index(request):
     """\r
     Provides a list of all the current servers. \r
     """\r
-    if 'page' in request.matchdict:\r
-        current_page = request.matchdict['page']\r
+    if request.params.has_key('page'):\r
+        current_page = request.params['page']\r
     else:\r
         current_page = 1\r
 \r
@@ -24,7 +24,7 @@ def server_index(request):
         server_q = DBSession.query(Server).\\r
                 order_by(Server.server_id.desc())\r
 \r
-        servers = Page(server_q, current_page, url=page_url)\r
+        servers = Page(server_q, current_page, items_per_page=10, url=page_url)\r
 \r
         \r
     except Exception as e:\r