{% macro render_field(field, group_class, readonly=False) %}
{{ field.label(class="col-sm-4 col-form-label", readonly=readonly) }} {% if field.errors %}
{{ field(class="form-control is-invalid", readonly=readonly)|safe }}
{% for error in field.errors %} {{ error }} {% endfor %}
{% else %}
{{ field(class="form-control", readonly=readonly)|safe }}
{% endif %}
{% endmacro %} {% macro render_checkbox(field, group_class, disabled=False) %}
{% if field.errors %} {{ field(class="form-check-input is-invalid", disabled=disabled)|safe }}
{% for error in field.errors %} {{ error }} {% endfor %}
{% else %} {{ field(class="form-check-input", disabled=disabled)|safe }} {% endif %} {{ field.label(class="form-check-label") }}
{% endmacro %} {% macro render_field(field, group_class, readonly=False, rows=3) %}
{{ field.label(class="col-sm-4 col-form-label", readonly=False) }} {% if field.errors %}
{{ field(class="form-control is-invalid", rows=rows, readonly=readonly)|safe }}
{% for error in field.errors %} {{ error }} {% endfor %}
{% else %}
{{ field(class="form-control", rows=rows, readonly=readonly)|safe }}
{% endif %}
{% endmacro %} {% macro render_multiple_select(field, group_class, disabled=False) %}
{{ field.label(class="col-sm-4 col-form-label", disabled=False) }} {% if field.errors %}
{{ field(class="form-control selectpicker is-invalid", disabled=disabled, multiple="multiple")|safe }}
{% for error in field.errors %} {{ error }} {% endfor %}
{% else %}
{{ field(class="form-control selectpicker", disabled=disabled, multiple="multiple")|safe }}
{% endif %}
{% endmacro %} {% macro render_button(field, color) -%}
{{ field(class="offset-sm-4 btn btn-" + color) }}
{%- endmacro %}