]> git.openstreetmap.org Git - osqa.git/blob - forum/templatetags/extra_filters.py
Adds the habillity to opt for a rendering mode in the static content settings.
[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         if number > 999:
23             if number > 9999:
24                 s = str(number)[:-3]
25             else:
26                 s = str(number)
27                 s = "%s.%s" % (s[0], s[1])
28
29             return mark_safe("<span class=\"%s\">%sk</span>" % (cls, s))
30         return number
31     except:
32         return number
33
34 @register.filter
35 def or_preview(setting, request):
36     if request.user.is_superuser:
37         previewing = request.session.get('previewing_settings', {})
38         if setting.name in previewing:
39             return previewing[setting.name]
40
41     return setting.value
42
43 @register.filter
44 def getval(map, key):
45     return map and map.get(key, None) or None
46
47
48 @register.filter
49 def contained_in(item, container):
50     return item in container
51
52 @register.filter
53 def static_content(content, render_mode):
54     if render_mode == 'markdown':
55         return mark_safe(markdown.markdown(unicode(content), ["settingsparser"]))
56     elif render_mode == "html":
57         return mark_safe(unicode(content))
58     else:
59         return unicode(content)