diff --git a/ippisite/ippidb/templatetags/customtags.py b/ippisite/ippidb/templatetags/customtags.py index 0fa52dde672fbc86f656d02a7759bbaebf92ca2a..de063e75ffea7a57649d7affe1904baf9db8fd74 100644 --- a/ippisite/ippidb/templatetags/customtags.py +++ b/ippisite/ippidb/templatetags/customtags.py @@ -1,7 +1,7 @@ import logging from django import template -from django.forms import BoundField +from django.forms import BoundField, widgets from django.utils.safestring import mark_safe register = template.Library() @@ -17,17 +17,37 @@ def url_replace(request, field, value): @register.filter def bootstrap(object): + ret = [] if isinstance(object, BoundField): field = object - attrs = {"class": "form-control" + (" is-invalid" if field.errors else "")} - ret = [] + attrs = field.field.widget.attrs + css_classes = set(attrs.get("class", "").split(" ")) + if field.errors: + css_classes.add("is-invalid") + print(type(field.field.widget)) + if isinstance(field.field.widget, widgets.CheckboxInput): + wrapping_classes = "form-check" + label_classes = "form-check-label" + css_classes.add("form-check-input") + else: + wrapping_classes = "input_field form-group" + label_classes = "form-control-placeholder" + css_classes.add("form-control") + attrs["class"] = " ".join(css_classes) + ret.append('<div class="%s">' % wrapping_classes) ret.append(field.as_widget(attrs=attrs)) - ret.append("""<label class="form-control-placeholder">%s</label>""" % field.label) + ret.append("""<label class="%s">%s</label>""" % (label_classes, field.label)) if field.errors: for e in field.errors: ret.append("""<div class="invalid-feedback">%s</div>""" % e) + ret.append('</div>') return mark_safe("".join(ret)) else: logger.error("Can't bootstrapize object of class %s" % str(type(object))) return object + + +@register.filter('startswith') +def startswith(text, starts): + return bootstrap(text.startswith(starts))