[Web] handle SyncGroups as Clients
[mygpo.git] / mygpo / web / templatetags / utils.py
blobf2997701457924f26c6549cc5bad33fdf8552db4
1 from django import template
2 from django.utils.safestring import mark_safe
4 from mygpo.web.utils import get_page_list, license_info, hours_to_str
5 from mygpo.utils import edit_link
8 register = template.Library()
10 @register.filter
11 def lookup(dic, key):
12 return mark_safe(dic.get(key, ''))
14 @register.filter
15 def lookup_list(dict, keys):
16 for key in keys:
17 if key in dict:
18 yield dict[key]
21 @register.simple_tag
22 def smartwidthratio(val, min_val, max_val, upper, lower):
23 if max_val == 0:
24 return 0
25 return max(lower, (float(val-min_val) / max_val * upper))
27 @register.filter
28 def page_list(cur, start, total, show_max):
29 return get_page_list(start, total, cur, show_max)
32 @register.filter
33 def filter_dict(dic):
34 return [key for key, val in dic.iteritems() if val]
37 @register.filter
38 def append(l, item):
39 return l + [item]
41 @register.filter
42 def remove(l, item):
43 return [x for x in l if x != item]
45 @register.filter
46 def format_time(time):
47 from mygpo.utils import format_time as _format_time
48 return mark_safe(_format_time(time))
51 @register.filter
52 def is_tuple(obj):
53 return isinstance(obj, tuple)
55 @register.filter
56 def is_list(obj):
57 return isinstance(obj, list)
59 @register.filter
60 def markdown(txt):
61 import markdown2
62 html = markdown2.markdown(txt, extras={'nofollow': True})
63 return mark_safe(html)
66 @register.filter
67 def nbsp(s):
68 """ collapses multiple whitespaces and replaces them with   """
69 import re
70 s = re.sub("\s+", " ", s)
71 return mark_safe(s)
74 @register.filter
75 def license_name(license_url):
76 """ returns a "pretty" license name for a license URL """
78 info = license_info(license_url)
80 if info.name:
81 return '%s %s' % (info.name, info.version or '')
83 return info.url
86 @register.filter
87 def urlquote(s):
88 """ makes urllib.quote_plus available as a template filter """
89 import urllib
90 if isinstance(s, unicode):
91 s = s.encode('utf-8')
92 return mark_safe(urllib.quote_plus(s))
95 hours_to_str = register.filter(hours_to_str)
97 @register.simple_tag
98 def protocol(request):
99 return 'http{s}://'.format(s='s' if request.is_secure() else '')
102 edit_link = register.simple_tag(edit_link)