]> de.git.xonotic.org Git - xonotic/xonstat.git/blobdiff - xonstat/models/map.py
Merge pull request #27 from antzucaro/elo-ping-latency
[xonotic/xonstat.git] / xonstat / models / map.py
index 33674022b66a5f23278ca7aabda19ffde43805f6..5549559f5d42a23da9da63242396a326d970a1ca 100644 (file)
@@ -1,49 +1,60 @@
+"""
+Models related to maps.
+"""
+
 from calendar import timegm
 
+from xonstat.models.mixins import FuzzyDateMixin, EpochMixin
 from xonstat.util import pretty_date, strip_colors, html_colors
 
 
-class Map(object):
+class Map(FuzzyDateMixin, EpochMixin):
+    """
+    A playable map. Roughly equivalent to a pk3 file, but distinguished by name instead.
+    """
+
     def __init__(self, name=None):
         self.name = name
 
     def __repr__(self):
-        return "<Map(%s, %s, %s)>" % (self.map_id, self.name, self.version)
+        return "<Map({0.map_id}, {0.name}, {0.version})>".format(self)
 
     def to_dict(self):
-        return {'map_id':self.map_id, 'name':self.name, 'version':self.version,}
-
-    def fuzzy_date(self):
-        return pretty_date(self.create_dt)
-
-    def epoch(self):
-        return timegm(self.create_dt.timetuple())
+        return {
+            'map_id': self.map_id,
+            'name': self.name,
+            'version': self.version,
+        }
 
 
+# TODO: investigate if this model is truly a model, or really just a query (i.e. namedtuple)
 class MapCapTime(object):
-    """Fastest flag capture times per map, assembled from a SQLAlchemy query"""
+    """
+    Fastest flag capture times per map.
+    """
+
     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.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
+        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,
-            }
\ No newline at end of file
+            "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,
+        }