from datetime import datetime, timedelta
+from pyexpat import ExpatError
+from xml.dom import minidom
from django import template
-from django.utils.html import format_html
+from django.conf import settings
+from django.forms.utils import flatatt
+from django.utils.html import format_html, format_html_join, conditional_escape
from django.utils.timesince import timesince
from django.utils.timezone import now
register = template.Library()
+register.filter('flatatt', flatatt)
@register.simple_tag
u' <div class="col-sm-3 text-right text-muted">{}</div>'
u' <div class="col-sm-9">{}</div>'
u'</div>', label, value)
+
+
+@register.simple_tag(takes_context=True)
+def get_params_as_hidden(context, *params):
+ return format_html_join('\n', u'<input type="hidden" name="{}" value="{}">',
+ ((param, v) for param in params for v in context['request'].GET.getlist(param, [])))
+
+
+@register.inclusion_tag('qcg/tags/bootstrap_checkbox.html')
+def bootstrap_checkbox(field, label_class=settings.BOOTSTRAP3['horizontal_label_class'],
+ field_class=settings.BOOTSTRAP3['horizontal_field_class']):
+ return {'field': field, 'attrs': flatatt(field.field.widget.attrs),
+ 'label_class': label_class, 'field_class': field_class}
+
+
+@register.inclusion_tag('qcg/tags/bootstrap_button_group.html')
+def bootstrap_button_group(field, label_class=settings.BOOTSTRAP3['horizontal_label_class'],
+ field_class=settings.BOOTSTRAP3['horizontal_field_class']):
+ return {'field': field, 'label_class': label_class, 'field_class': field_class}
+
+
+@register.filter(needs_autoescape=True)
+def format_xml(string, autoescape=None):
+ esc = conditional_escape if autoescape else lambda x: x
+ try:
+ return esc(minidom.parseString(string).toprettyxml(indent=' '))
+ except ExpatError:
+ return string