1 from datetime import datetime, timedelta
2 from pyexpat import ExpatError
3 from xml.dom import minidom
5 from django import template
6 from django.conf import settings
7 from django.forms.utils import flatatt
8 from django.utils.html import format_html, format_html_join, conditional_escape
9 from django.utils.timesince import timesince
10 from django.utils.timezone import now
12 from qcg.utils import localtime_str
15 register = template.Library()
16 register.filter('flatatt', flatatt)
20 def display_attribute(label, value):
21 if isinstance(value, bool):
22 value = 'Tak' if value else 'Nie'
23 elif isinstance(value, datetime):
24 value = localtime_str(value)
25 elif isinstance(value, timedelta):
26 value = timesince(now() - value)
31 return format_html(u'<div class="row">'
32 u' <div class="col-sm-3 text-right text-muted">{}</div>'
33 u' <div class="col-sm-9">{}</div>'
34 u'</div>', label, value)
37 @register.simple_tag(takes_context=True)
38 def get_params_as_hidden(context, *params):
39 return format_html_join('\n', u'<input type="hidden" name="{}" value="{}">',
40 ((param, v) for param in params for v in context['request'].GET.getlist(param, [])))
43 @register.inclusion_tag('qcg/tags/bootstrap_checkbox.html')
44 def bootstrap_checkbox(field, label_class=settings.BOOTSTRAP3['horizontal_label_class'],
45 field_class=settings.BOOTSTRAP3['horizontal_field_class']):
46 return {'field': field, 'attrs': flatatt(field.field.widget.attrs),
47 'label_class': label_class, 'field_class': field_class}
50 @register.inclusion_tag('qcg/tags/bootstrap_button_group.html')
51 def bootstrap_button_group(field, label_class=settings.BOOTSTRAP3['horizontal_label_class'],
52 field_class=settings.BOOTSTRAP3['horizontal_field_class']):
53 return {'field': field, 'label_class': label_class, 'field_class': field_class}
56 @register.filter(needs_autoescape=True)
57 def format_xml(string, autoescape=None):
58 esc = conditional_escape if autoescape else lambda x: x
60 return esc(minidom.parseString(string).toprettyxml(indent=' '))