20f8c119475525e994582fffa3b9ce4245e0bce4
[xonotic/xonstat.git] / xonstat / models / server.py
1 """
2 Models related to servers.
3 """
4
5 from calendar import timegm
6 from datetime import datetime as dt
7
8 from xonstat.util import pretty_date
9
10
11 class Server(object):
12     """
13     A Xonotic server, identifiable by name and (when there's a conflict) hashkey.
14     """
15
16     def __init__(self, name=None, hashkey=None, ip_addr=None):
17         self.name = name
18         self.hashkey = hashkey
19         self.ip_addr = ip_addr
20         self.create_dt = dt.utcnow()
21
22     def __repr__(self):
23         return "<Server({}, {})>".format(self.server_id, self.name.encode('utf-8'))
24
25     def to_dict(self):
26         return {
27             'server_id': self.server_id,
28             'name': self.name,
29             'ip_addr': self.ip_addr,
30             'location': self.location,
31         }
32
33     def fuzzy_date(self):
34         return pretty_date(self.create_dt)
35
36     def epoch(self):
37         return timegm(self.create_dt.timetuple())