]> de.git.xonotic.org Git - xonotic/xonstat.git/blob - xonstat/util.py
e9d179a933f53670321aa0e15ca4d1b89933c273
[xonotic/xonstat.git] / xonstat / util.py
1 import re
2 from datetime import datetime
3
4 def strip_colors(str=None):
5     str = re.sub(r'\^x\w\w\w', '', str)
6     str = re.sub(r'\^\d', '', str)
7     return str
8
9
10 def html_colors(str=None):
11     orig = str
12     str = re.sub(r'\^x(\w)(\w)(\w)', 
13             "<span style='color:#\g<1>\g<1>\g<2>\g<2>\g<3>\g<3>'>", str)
14     str = re.sub(r'\^1', "<span style='color:#FF9900'>", str)
15     str = re.sub(r'\^2', "<span style='color:#33FF00'>", str)
16     str = re.sub(r'\^3', "<span style='color:#FFFF00'>", str)
17     str = re.sub(r'\^4', "<span style='color:#3366FF'>", str)
18     str = re.sub(r'\^5', "<span style='color:#33FFFF'>", str)
19     str = re.sub(r'\^6', "<span style='color:#FF3366'>", str)
20     str = re.sub(r'\^7', "<span style='color:#FFFFFF'>", str)
21     str = re.sub(r'\^8', "<span style='color:#999999'>", str)
22     str = re.sub(r'\^9', "<span style='color:#666666'>", str)
23     str = re.sub(r'\^0', "<span style='color:#333333'>", str)
24
25     for span in range(len(re.findall(r'\^x\w\w\w|\^\d', orig))):
26         str += "</span>"
27
28     return str
29
30
31 def page_url(page):
32     return current_route_url(request, page=page, _query=request.GET)
33
34
35 def pretty_date(time=False):
36     """
37     Get a datetime object or a int() Epoch timestamp and return a
38     pretty string like 'an hour ago', 'Yesterday', '3 months ago',
39     'just now', etc
40     """
41     now = datetime.now()
42     if type(time) is int:
43         diff = now - datetime.fromtimestamp(time)
44     elif isinstance(time,datetime):
45         diff = now - time 
46     elif not time:
47         diff = now - now
48     second_diff = diff.seconds
49     day_diff = diff.days
50
51     if day_diff < 0:
52         return ''
53
54     if day_diff == 0:
55         if second_diff < 10:
56             return "just now"
57         if second_diff < 60:
58             return str(second_diff) + " seconds ago"
59         if second_diff < 120:
60             return  "a minute ago"
61         if second_diff < 3600:
62             return str( second_diff / 60 ) + " minutes ago"
63         if second_diff < 7200:
64             return "an hour ago"
65         if second_diff < 86400:
66             return str( second_diff / 3600 ) + " hours ago"
67     if day_diff == 1:
68         return "Yesterday"
69     if day_diff < 7:
70         return str(day_diff) + " days ago"
71     if day_diff < 31:
72         if day_diff/7 == 1:
73             return "a week ago"
74         else:
75             return str(day_diff/7) + " weeks ago"
76     if day_diff < 365:
77         if day_diff/30 == 1:
78             return "a month ago"
79         else:
80             return str(day_diff/30) + " months ago"
81     else:
82         if day_diff/365 == 1:
83             return "a year ago"
84         else:
85             return str(day_diff/365) + " years ago"