]> de.git.xonotic.org Git - xonotic/xonstat.git/blobdiff - xonstat/views/player.py
Add separate views for the top servers on a map.
[xonotic/xonstat.git] / xonstat / views / player.py
index 7668774501756d054330a8920fce623aa6d168fc..41af4f11e2d2b4a9bb177de4474c4ece67dfbaea 100644 (file)
@@ -1,17 +1,20 @@
 import datetime
 import logging
+from calendar import timegm
+from collections import namedtuple
+from urllib import unquote
+
 import pyramid.httpexceptions
 import sqlalchemy as sa
-import sqlalchemy.sql.functions as func
 import sqlalchemy.sql.expression as expr
-from calendar import timegm
-from collections import namedtuple
+import sqlalchemy.sql.functions as func
 from webhelpers.paginate import Page
-from xonstat.models import *
-from xonstat.util import page_url, to_json, pretty_date, datetime_seconds
+from xonstat.models import DBSession, Server, Map, Game, PlayerWeaponStat, Player, Hashkey
+from xonstat.models import PlayerElo, PlayerCaptime, PlayerMedal, GameType
+from xonstat.models.player import PlayerCapTime
 from xonstat.util import is_cake_day, verify_request
+from xonstat.util import page_url, to_json, pretty_date, datetime_seconds
 from xonstat.views.helpers import RecentGame, recent_games_q
-from urllib import unquote
 
 log = logging.getLogger(__name__)
 
@@ -494,6 +497,23 @@ def get_damage_stats(player_id, weapon_cd, games):
     return (avg, dmgs)
 
 
+def get_player_medals(player_id):
+    """Retrieves the list of medals the player has received from tournaments or
+    other contests."""
+    try:
+        medals = DBSession.query(PlayerMedal)\
+                .filter(PlayerMedal.player_id==player_id)\
+                .order_by(PlayerMedal.place)\
+                .order_by(PlayerMedal.create_dt)\
+                .all()
+
+        return medals
+    
+    except Exception as e:
+        log.debug(e)
+        return []
+
+
 def player_info_data(request):
     player_id = int(request.matchdict['id'])
     if player_id <= 2:
@@ -508,6 +528,7 @@ def player_info_data(request):
         fav_maps       = get_fav_maps(player_id)
         elos           = get_elos(player_id)
         ranks          = get_ranks(player_id)
+        medals         = get_player_medals(player_id)
         recent_games   = get_recent_games(player_id)
         cake_day       = is_cake_day(player.create_dt)
 
@@ -523,6 +544,7 @@ def player_info_data(request):
             'fav_maps':fav_maps,
             'elos':elos,
             'ranks':ranks,
+            'medals':medals,
             'recent_games':recent_games,
             'cake_day':cake_day,
             }
@@ -1167,9 +1189,18 @@ def player_versus_data(request):
 
     except Exception as e:
         log.debug(e)
-        raise pyramid.httpexceptions.HTTPNotFound
+
+        p1_id = None
+        p2_id = None
+        p1 = None
+        p2 = None
+        p1_wins = None
+        p2_wins = None
+        rgs = None
 
     return {
+            "p1_id" : p1_id,
+            "p2_id" : p2_id,
             "p1" : p1,
             "p2" : p2,
             "p1_wins" : p1_wins,