forked from cds-snc/track-web
/
helpers.py
63 lines (51 loc) · 1.78 KB
/
helpers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import pkg_resources
import yaml
import datetime
import os
from track import models
from track.data import FIELD_MAPPING
from babel.dates import format_date
# For use in templates.
def register(app):
###
# Context processors and filters.
def scan_date():
latest = models.Report.latest()
if latest:
return models.Report.report_time(latest["report_date"])
else:
return datetime.datetime.now()
# Make site metadata available everywhere.
resource_package = __name__
resource_path = 'track_meta.yml'
meta_content = pkg_resources.resource_string(resource_package, resource_path).decode('utf-8')
meta = yaml.safe_load(meta_content)
@app.context_processor
def inject_meta():
return dict(site=meta, now=datetime.datetime.utcnow, scan_date=scan_date())
@app.template_filter("date")
def datetimeformat(value, format="%H:%M / %d-%m-%Y"):
return value.strftime(format)
@app.template_filter("display_date")
def displaydateformat(value, lang):
return format_date(value, format='long', locale=lang)
@app.template_filter("site_title")
def displaysitetitle(value, mobile):
if value == 'index':
return "hidden"
elif not mobile:
return "flex-1"
else:
return ""
@app.template_filter("field_map")
def field_map(value, category=None, field=None):
return FIELD_MAPPING[category][field][value]
@app.template_filter("percent")
def percent(num, denom):
return round((num / denom) * 100)
@app.template_filter("percent_not")
def percent_not(num, denom):
return (100 - round((num / denom) * 100))
@app.template_filter("fetch_env")
def fetch_env(value):
return os.getenv(value)