]> git.openstreetmap.org Git - osqa.git/blob - forum/templatetags/extra_filters.py
e13923fe30330f7bd7f8575b21655a435a8668ea
[osqa.git] / forum / templatetags / extra_filters.py
1 from django import template
2 from django.utils.safestring import mark_safe
3 import logging
4 import markdown
5
6 register = template.Library()
7
8 @template.defaultfilters.stringfilter
9 @register.filter
10 def collapse(input):
11     return ' '.join(input.split())
12
13
14 @register.filter
15 def can_edit_post(user, post):
16     return user.can_edit_post(post)
17
18
19 @register.filter
20 def decorated_int(number, cls="thousand"):
21     try:
22         number = int(number)    # allow strings or numbers passed in
23         if number > 999:
24             thousands = float(number) / 1000.0
25             format = "%.1f" if number < 99500 else "%.0f"
26             s = format % thousands
27
28             return mark_safe("<span class=\"%s\">%sk</span>" % (cls, s))
29         return number
30     except:
31         return number
32
33 @register.filter
34 def or_preview(setting, request):
35     if request.user.is_superuser:
36         previewing = request.session.get('previewing_settings', {})
37         if setting.name in previewing:
38             return previewing[setting.name]
39
40     return setting.value
41
42 @register.filter
43 def getval(map, key):
44     return map and map.get(key, None) or None
45
46
47 @register.filter
48 def contained_in(item, container):
49     return item in container
50
51 @register.filter
52 def static_content(content, render_mode):
53     if render_mode == 'markdown':
54         return mark_safe(markdown.markdown(unicode(content), ["settingsparser"]))
55     elif render_mode == "html":
56         return mark_safe(unicode(content))
57     else:
58         return unicode(content)