Package coprs :: Module filters
[hide private]
[frames] | no frames]

Source Code for Module coprs.filters

  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
21 22 @app.template_filter("perm_type_from_num") 23 -def perm_type_from_num(num):
24 return helpers.PermissionEnum(num)
25
26 27 @app.template_filter("state_from_num") 28 -def state_from_num(num):
29 if num is None: 30 return "unknown" 31 return helpers.StatusEnum(num)
32
33 34 @app.template_filter("os_name_short") 35 -def os_name_short(os_name, os_version):
36 # TODO: make it models.MockChroot method or not? 37 if os_version: 38 if os_version == "rawhide": 39 return os_version 40 if os_name == "fedora": 41 return "fc.{0}".format(os_version) 42 elif os_name == "epel": 43 return "el{0}".format(os_version) 44 return os_name
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 # less than 2 minutes 82 return "1 minute" 83 elif secdiff < 7200: 84 # less than 2 hours 85 return str(secdiff/60) + " minutes" 86 elif secdiff < 172800: 87 # less than 2 days 88 return str(secdiff/3600) + " hours" 89 elif secdiff < 5184000: 90 # less than 2 months 91 return str(secdiff/86400) + " days" 92 elif secdiff < 63072000: 93 # less than 2 years 94 return str(secdiff/2592000) + " months" 95 else: 96 # more than 2 years 97 return str(secdiff/31536000) + " days"
98
99 100 @app.template_filter("markdown") 101 -def markdown_filter(data):
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
111 112 @app.template_filter("pkg_name") 113 -def parse_package_name(pkg):
114 if pkg is not None: 115 return helpers.parse_package_name(os.path.basename(pkg)) 116 return pkg
117
118 119 @app.template_filter("basename") 120 -def parse_package_name(pkg):
121 if pkg is not None: 122 return os.path.basename(pkg) 123 return pkg
124
125 126 @app.template_filter("build_state_description") 127 -def build_state_decoration(state):
128 description = "" 129 if state == "skipped": 130 description = "This package has already been built previously" 131 132 return description
133