]> de.git.xonotic.org Git - xonotic/xonstat.git/blobdiff - xonstat/views/server.py
Convert the server index to a class-based view callable. Add a JSON view.
[xonotic/xonstat.git] / xonstat / views / server.py
index 6270ed0338585e3ea346d2940aa076f81cb532b1..1baeac1295b63ae2ccdb2e6b539ba8a2febc9a83 100644 (file)
@@ -9,37 +9,33 @@ from xonstat.views.helpers import RecentGame, recent_games_q
 
 log = logging.getLogger(__name__)
 
-def _server_index_data(request):
-    if request.params.has_key('page'):
-        current_page = request.params['page']
-    else:
-        current_page = 1
 
-    try:
-        server_q = DBSession.query(Server).\
-                order_by(Server.server_id.desc())
-
-        servers = Page(server_q, current_page, items_per_page=25, url=page_url)
+class ServerIndex(object):
 
+    def __init__(self, request):
+        self.request = request
+        self.page = request.params.get("page", 1)
+        self.servers = self._data()
 
-    except Exception as e:
-        servers = None
+    def _data(self):
+        try:
+            server_q = DBSession.query(Server).order_by(Server.server_id.desc())
+            servers = Page(server_q, self.page, items_per_page=25, url=page_url)
 
-    return {'servers':servers, }
+        except:
+            servers = None
 
+        return servers
 
-def server_index(request):
-    """
-    Provides a list of all the current servers.
-    """
-    return _server_index_data(request)
+    def html(self):
+        return {
+            'servers': self.servers,
+        }
 
-
-def server_index_json(request):
-    """
-    Provides a list of all the current servers. JSON.
-    """
-    return [{'status':'not implemented'}]
+    def json(self):
+        return {
+            'servers': [s.to_dict() for s in self.servers],
+        }
 
 
 def _server_info_data(request):