]> de.git.xonotic.org Git - xonotic/xonstat.git/blobdiff - xonstat/views/player.py
The player JSON view should use to_dict() instead.
[xonotic/xonstat.git] / xonstat / views / player.py
index bf877be6bd17d38b93ac251ea8064e5dc84fd06a..26da28f9deb3d29732a40ef063a728aeb6c4314d 100644 (file)
@@ -564,9 +564,7 @@ def player_info_json(request):
     for gt,mapinfo in player_info['fav_maps'].items():
         fav_maps[gt] = to_json(mapinfo)
 
-    recent_games = []
-    for game in player_info['recent_games']:
-        recent_games.append(to_json(game))
+    recent_games = [g.to_dict() for g in player_info['recent_games']]
 
     return [{
         'player':           player,
@@ -577,7 +575,6 @@ def player_info_json(request):
         'ranks':            ranks,
         'recent_games':     recent_games,
     }]
-    #return [{'status':'not implemented'}]
 
 
 def player_game_index_data(request):
@@ -978,18 +975,11 @@ def player_captimes_data(request):
     if player_id <= 2:
         player_id = -1;
 
-    if request.params.has_key('page'):
-        current_page = request.params['page']
-    else:
-        current_page = 1
-
-    PlayerCaptimes = namedtuple('PlayerCaptimes', ['fastest_cap',
-            'create_dt', 'create_dt_epoch', 'create_dt_fuzzy',
-            'player_id', 'game_id', 'map_id', 'map_name', 'server_id', 'server_name'])
-
-    player = DBSession.query(Player).filter_by(player_id=player_id).one()
+    current_page = request.params.get("page", 1)
 
     try:
+        player = DBSession.query(Player).filter_by(player_id=player_id).one()
+
         pct_q = DBSession.query(PlayerCaptime.fastest_cap, PlayerCaptime.create_dt,
                 PlayerCaptime.player_id, PlayerCaptime.game_id, PlayerCaptime.map_id,
                 Map.name.label('map_name'), Game.server_id, Server.name.label('server_name')).\
@@ -999,30 +989,18 @@ def player_captimes_data(request):
                 filter(Game.server_id==Server.server_id).\
                 order_by(expr.desc(PlayerCaptime.create_dt))
 
-        player_captimes = Page(pct_q, current_page, items_per_page=20, url=page_url)
+    except Exception as e:
+        raise pyramid.httpexceptions.HTTPNotFound
 
-        # replace the items in the canned pagination class with more rich ones
-        player_captimes.items = [PlayerCaptimes(
-                fastest_cap=row.fastest_cap,
-                create_dt=row.create_dt,
-                create_dt_epoch=timegm(row.create_dt.timetuple()),
-                create_dt_fuzzy=pretty_date(row.create_dt),
-                player_id=row.player_id,
-                game_id=row.game_id,
-                map_id=row.map_id,
-                map_name=row.map_name,
-                server_id=row.server_id,
-                server_name=row.server_name
-                ) for row in player_captimes.items]
+    captimes = Page(pct_q, current_page, items_per_page=20, url=page_url)
 
-    except Exception as e:
-        player = None
-        player_captimes = None
+    # replace the items in the canned pagination class with more rich ones
+    captimes.items = [PlayerCapTime(row) for row in captimes.items]
 
     return {
-            'player_id':player_id,
-            'player':player,
-            'captimes':player_captimes,
+            "player_id" : player_id,
+            "player"    : player,
+            "captimes"  : captimes,
         }
 
 
@@ -1031,7 +1009,19 @@ def player_captimes(request):
 
 
 def player_captimes_json(request):
-    return player_captimes_data(request)
+    data = player_captimes_data(request)
+    page = request.params.get("page", 1)
+
+    # perform any necessary JSON conversions
+    player_id = data["player_id"]
+    player = data["player"].to_dict()
+    captimes = [ct.to_dict() for ct in data["captimes"].items]
+
+    return {
+            "player"    : player,
+            "captimes"  : captimes,
+            "page"      : page,
+            }
 
 
 def player_weaponstats_data_json(request):