]> git.openstreetmap.org Git - osqa.git/blob - forum/templatetags/extra_filters.py
OSQA-525, use old style syntax for the if-statements, adds a bit of backwards compati...
[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
26             if number < 99500:
27                 format = "%.1f"
28             else:
29                 format = "%.0f"
30
31             s = format % thousands
32
33             return mark_safe("<span class=\"%s\">%sk</span>" % (cls, s))
34         return number
35     except:
36         return number
37
38 @register.filter
39 def or_preview(setting, request):
40     if request.user.is_superuser:
41         previewing = request.session.get('previewing_settings', {})
42         if setting.name in previewing:
43             return previewing[setting.name]
44
45     return setting.value
46
47 @register.filter
48 def getval(map, key):
49     return map and map.get(key, None) or None
50
51
52 @register.filter
53 def contained_in(item, container):
54     return item in container
55
56 @register.filter
57 def static_content(content, render_mode):
58     if render_mode == 'markdown':
59         return mark_safe(markdown.markdown(unicode(content), ["settingsparser"]))
60     elif render_mode == "html":
61         return mark_safe(unicode(content))
62     else:
63         return unicode(content)