]> git.xonotic.org Git - xonotic/xonstat.git/blobdiff - xonstat/models.py
Show player medals on the player_info page.
[xonotic/xonstat.git] / xonstat / models.py
index a8be3241fe11849b5851fb37f381466dc58f10b1..56f4260278bf2664b21238d3e10b9508c2e1e618 100644 (file)
@@ -258,14 +258,16 @@ class PlayerRank(object):
 
 class PlayerCaptime(object):
     def __init__(self, player_id=None, game_id=None, map_id=None,
-            fastest_cap=None):
+            fastest_cap=None, mod=None):
         self.player_id = player_id
         self.game_id = game_id
         self.map_id = map_id
         self.fastest_cap = fastest_cap
+        self.mod = mod
 
     def __repr__(self):
-        return "<PlayerCaptime(pid=%s, map_id=%s)>" % (self.player_id, self.map_id)
+        return "<PlayerCaptime(pid=%s, map_id=%s, mod=%s)>" % (self.player_id,
+                self.map_id, self.mod)
 
     def fuzzy_date(self):
         return pretty_date(self.create_dt)
@@ -309,6 +311,129 @@ class TeamGameStat(object):
             return "pink"
 
 
+class PlayerGameAnticheat(object):
+    def __init__(self, player_id=None, game_id=None, key=None,
+            value=None, create_dt=None):
+        self.player_id                = player_id
+        self.game_id                  = game_id
+        self.key                      = key
+        self.value                    = value
+        self.create_dt                = create_dt
+
+    def __repr__(self):
+        return "<PlayerGameAnticheat(%s, %d)>" % (self.key, self.value)
+
+
+class PlayerGroups(object):
+    def __init__(self, player_id=None, group_name=None):
+        self.player_id  = player_id
+        self.group_name = group_name
+
+    def __repr__(self):
+        return "<PlayerGroups(%s, %s)>" % (self.player_id, self.group_name)
+
+
+class MapCapTime(object):
+    """Fastest flag capture times per map, assembled from a SQLAlchemy query"""
+    def __init__(self, row):
+        self.fastest_cap          = row.fastest_cap
+        self.create_dt            = row.create_dt
+        self.create_dt_epoch      = timegm(row.create_dt.timetuple())
+        self.create_dt_fuzzy      = pretty_date(row.create_dt)
+        self.player_id            = row.player_id
+        self.player_nick          = row.player_nick
+        self.player_nick_stripped = strip_colors(row.player_nick)
+        self.player_nick_html     = html_colors(row.player_nick)
+        self.game_id              = row.game_id
+        self.server_id            = row.server_id
+        self.server_name          = row.server_name
+
+    def to_dict(self):
+        return {
+            "fastest_cap"          : self.fastest_cap.total_seconds(),
+            "create_dt_epoch"      : self.create_dt_epoch,
+            "create_dt_fuzzy"      : self.create_dt_fuzzy,
+            "player_id"            : self.player_id,
+            "player_nick"          : self.player_nick,
+            "player_nick_stripped" : self.player_nick_stripped,
+            "game_id"              : self.game_id,
+            "server_id"            : self.server_id,
+            "server_name"          : self.server_name,
+            }
+
+
+class PlayerCapTime(object):
+    """Fastest flag capture times per player, assembled from a SQLAlchemy query"""
+    def __init__(self, row):
+        self.fastest_cap = row.fastest_cap
+        self.create_dt = row.create_dt
+        self.create_dt_epoch = timegm(row.create_dt.timetuple())
+        self.create_dt_fuzzy = pretty_date(row.create_dt)
+        self.player_id = row.player_id
+        self.game_id = row.game_id
+        self.map_id = row.map_id
+        self.map_name = row.map_name
+        self.server_id = row.server_id
+        self.server_name = row.server_name
+
+    def to_dict(self):
+        return {
+            "fastest_cap" : self.fastest_cap.total_seconds(),
+            "create_dt_epoch": self.create_dt_epoch,
+            "create_dt_fuzzy": self.create_dt_fuzzy,
+            "game_id":self.game_id,
+            "map_id": self.map_id,
+            "map_name": self.map_name,
+            "server_id": self.server_id,
+            "server_name": self.server_name,
+            }
+
+
+class ActivePlayer(object):
+    def __init__(self, sort_order=None, player_id=None, nick=None,
+            alivetime=None):
+        self.sort_order = sort_order
+        self.player_id = player_id
+        self.nick = nick
+        self.alivetime = alivetime
+
+    def nick_html_colors(self):
+        return html_colors(self.nick)
+
+    def __repr__(self):
+        return "<ActivePlayer(%s, %s)>" % (self.sort_order, self.player_id)
+
+
+class ActiveServer(object):
+    def __init__(self, sort_order=None, server_id=None, server_name=None,
+            games=None):
+        self.sort_order = sort_order
+        self.server_id = server_id
+        self.server_name = server_name
+        self.games = games
+
+    def __repr__(self):
+        return "<ActiveServer(%s, %s)>" % (self.sort_order, self.server_id)
+
+
+class ActiveMap(object):
+    def __init__(self, sort_order=None, map_id=None, map_name=None,
+            games=None):
+        self.sort_order = sort_order
+        self.map_id = map_id
+        self.map_name = map_name
+        self.games = games
+
+    def __repr__(self):
+        return "<ActiveMap(%s, %s)>" % (self.sort_order, self.map_id)
+
+
+class PlayerMedal(object):
+    def __repr__(self):
+        return "<PlayerRank(pid=%s, place=%s, alt=%s)>" % (self.player_id,
+                self.place, self.alt)
+
+
 def initialize_db(engine=None):
     DBSession.configure(bind=engine)
     Base.metadata.bind = engine
@@ -335,6 +460,12 @@ def initialize_db(engine=None):
     player_captimes_table = MetaData.tables['player_map_captimes']
     summary_stats_table = MetaData.tables['summary_stats']
     team_game_stats_table = MetaData.tables['team_game_stats']
+    player_game_anticheats_table = MetaData.tables['player_game_anticheats']
+    player_groups_table = MetaData.tables['player_groups']
+    active_players_table = MetaData.tables['active_players_mv']
+    active_servers_table = MetaData.tables['active_servers_mv']
+    active_maps_table = MetaData.tables['active_maps_mv']
+    player_medals_table = MetaData.tables['player_medals']
 
     # now map the tables and the objects together
     mapper(PlayerAchievement, achievements_table)
@@ -354,3 +485,9 @@ def initialize_db(engine=None):
     mapper(PlayerCaptime, player_captimes_table)
     mapper(SummaryStat, summary_stats_table)
     mapper(TeamGameStat, team_game_stats_table)
+    mapper(PlayerGameAnticheat, player_game_anticheats_table)
+    mapper(PlayerGroups, player_groups_table)
+    mapper(ActivePlayer, active_players_table)
+    mapper(ActiveServer, active_servers_table)
+    mapper(ActiveMap, active_maps_table)
+    mapper(PlayerMedal, player_medals_table)