Merge pull request #793 from gpodder/remove-advertise
[mygpo.git] / mygpo / web / templatetags / utils.py
blob074b25f90a311756db67c96cdae1d98b65dcb14b
1 import urllib.parse
3 from django.utils.safestring import mark_safe
4 from django import template
5 from django.utils.safestring import mark_safe
7 from mygpo.web.utils import get_page_list, license_info, hours_to_str
8 from mygpo.utils import edit_link
11 register = template.Library()
14 @register.filter()
15 def lookup(dic, key):
16 return dic.get(key, "")
19 @register.filter
20 def lookup_list(dict, keys):
21 for key in keys:
22 if key in dict:
23 yield dict[key]
26 @register.simple_tag
27 def smartwidthratio(val, min_val, max_val, upper, lower):
28 if max_val == 0:
29 return 0
30 return max(lower, (float(val - min_val) / max_val * upper))
33 @register.filter
34 def page_list(cur, start, total, show_max):
35 return get_page_list(start, total, cur, show_max)
38 @register.filter
39 def filter_dict(dic):
40 return [key for key, val in dic.items() if val]
43 @register.filter
44 def append(l, item):
45 return l + [item]
48 @register.filter
49 def remove(l, item):
50 return [x for x in l if x != item]
53 @register.filter
54 def format_time(time):
55 from mygpo.utils import format_time as _format_time
57 return mark_safe(_format_time(time))
60 @register.filter
61 def is_tuple(obj):
62 return isinstance(obj, tuple)
65 @register.filter()
66 def markdown(txt):
67 import markdown2
69 return mark_safe(markdown2.markdown(txt, extras={"nofollow": True}))
72 @register.filter()
73 def nbsp(s):
74 """collapses multiple whitespaces and replaces them with  """
75 import re
77 return mark_safe(re.sub(r"\s+", " ", s))
80 @register.filter
81 def license_name(license_url):
82 """returns a "pretty" license name for a license URL"""
84 info = license_info(license_url)
86 if info.name:
87 return "%s %s" % (info.name, info.version or "")
89 return info.url
92 @register.filter()
93 def urlquote(s):
94 """makes urllib.quote_plus available as a template filter"""
95 if isinstance(s, str):
96 s = s.encode("utf-8")
97 return mark_safe(urllib.parse.quote_plus(s))
100 hours_to_str = register.filter(hours_to_str)
103 @register.simple_tag
104 def protocol(request):
105 return "http{s}://".format(s="s" if request.is_secure() else "")
108 edit_link = register.simple_tag(edit_link)