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()
12 return mark_safe(dic
.get(key
, ''))
15 def lookup_list(dict, keys
):
22 def smartwidthratio(val
, min_val
, max_val
, upper
, lower
):
25 return max(lower
, (float(val
-min_val
) / max_val
* upper
))
28 def page_list(cur
, start
, total
, show_max
):
29 return get_page_list(start
, total
, cur
, show_max
)
34 return [key
for key
, val
in dic
.iteritems() if val
]
43 return [x
for x
in l
if x
!= item
]
46 def format_time(time
):
47 from mygpo
.utils
import format_time
as _format_time
48 return mark_safe(_format_time(time
))
53 return isinstance(obj
, tuple)
57 return isinstance(obj
, list)
62 html
= markdown2
.markdown(txt
, extras
={'nofollow': True})
63 return mark_safe(html
)
68 """ collapses multiple whitespaces and replaces them with """
70 s
= re
.sub("\s+", " ", s
)
75 def license_name(license_url
):
76 """ returns a "pretty" license name for a license URL """
78 info
= license_info(license_url
)
81 return '%s %s' % (info
.name
, info
.version
or '')
88 """ makes urllib.quote_plus available as a template filter """
90 if isinstance(s
, unicode):
92 return mark_safe(urllib
.quote_plus(s
))
95 hours_to_str
= register
.filter(hours_to_str
)
98 def protocol(request
):
99 return 'http{s}://'.format(s
='s' if request
.is_secure() else '')
102 edit_link
= register
.simple_tag(edit_link
)