1 import datetime
2 import pytz
3 import time
4 import markdown
5
6 import os
7
8 from flask import Markup
9
10 from coprs import app
11 from coprs import helpers
12
13
14 @app.template_filter("date_from_secs")
15 -def date_from_secs(secs):
16 if secs:
17 return time.strftime("%Y-%m-%d %H:%M:%S %Z", time.gmtime(secs))
18
19 return None
20
25
32
33
34 @app.template_filter("os_name_short")
35 -def os_name_short(os_name, os_version):
45
46
47 @app.template_filter('localized_time')
48 -def localized_time(time_in, timezone):
49 """ return time shifted into timezone (and printed in ISO format)
50
51 Input is in EPOCH (seconds since epoch).
52 """
53 if not time_in:
54 return "Not yet"
55 format_tz = "%y-%m-%d %H:%M %Z"
56 utc_tz = pytz.timezone('UTC')
57 if timezone:
58 user_tz = pytz.timezone(timezone)
59 else:
60 user_tz = utc_tz
61 dt_aware = datetime.datetime.fromtimestamp(time_in).replace(tzinfo=utc_tz)
62 dt_my_tz = dt_aware.astimezone(user_tz)
63 return dt_my_tz.strftime(format_tz)
64
65
66 @app.template_filter('time_ago')
67 -def time_ago(time_in, until=None):
68 """ returns string saying how long ago the time on input was
69
70 Input is in EPOCH (seconds since epoch).
71 """
72 if time_in is None:
73 return " - "
74 if until is not None:
75 now = datetime.datetime.fromtimestamp(until)
76 else:
77 now = datetime.datetime.now()
78 diff = now - datetime.datetime.fromtimestamp(time_in)
79 secdiff = int(diff.total_seconds())
80 if secdiff < 120:
81
82 return "1 minute"
83 elif secdiff < 7200:
84
85 return str(secdiff/60) + " minutes"
86 elif secdiff < 172800:
87
88 return str(secdiff/3600) + " hours"
89 elif secdiff < 5184000:
90
91 return str(secdiff/86400) + " days"
92 elif secdiff < 63072000:
93
94 return str(secdiff/2592000) + " months"
95 else:
96
97 return str(secdiff/31536000) + " days"
98
102 if not data:
103 return ''
104
105 md = markdown.Markdown(
106 safe_mode="replace",
107 html_replacement_text="--RAW HTML NOT ALLOWED--")
108
109 return Markup(md.convert(data))
110
117
121 if pkg is not None:
122 return os.path.basename(pkg)
123 return pkg
124
133