{% macro form_errors(form, hiddens=True) %} {%- if form.errors %} {%- for fieldname, errors in form.errors.items() %} {%- if bootstrap_is_hidden_field(form[fieldname]) and hiddens or bootstrap_is_hidden_field(form[fieldname]) and hiddens != 'only' %} {%- for error in errors %}

{{error}}

{%- endfor %} {%- endif %} {%- endfor %} {%- endif %} {%- endmacro %} {% macro _hz_form_wrap(horizontal_columns, form_type, add_group=False) %} {% if form_type == "horizontal" %} {% if add_group %}
{% endif %}
{% endif %} {{caller()}} {% if form_type == "horizontal" %} {% if add_group %}
{% endif %}
{% endif %} {% endmacro %} {% macro form_field(field, form_type="basic", horizontal_columns=('lg', 2, 10), button_map={}) %} {% if field.widget.input_type == 'checkbox' %} {% call _hz_form_wrap(horizontal_columns, form_type, True) %}
{% endcall %} {%- elif field.type == 'RadioField' -%} {# note: A cleaner solution would be rendering depending on the widget, this is just a hack for now, until I can think of something better #} {% call _hz_form_wrap(horizontal_columns, form_type, True) %} {% for item in field -%}
{% endfor %} {% endcall %} {%- elif field.type == 'SubmitField' -%} {# note: same issue as above - should check widget, not field type #} {% call _hz_form_wrap(horizontal_columns, form_type, True) %} {{field(class='btn btn-%s' % button_map.get(field.name, 'default'))}} {% endcall %} {% else -%}
{%- if form_type == "inline" %} {{field.label(class="sr-only")|safe}} {{field(class="form-control", placeholder=field.description, **kwargs)|safe}} {% elif form_type == "horizontal" %} {{field.label(class="control-label " + ( " col-%s-%s" % horizontal_columns[0:2] ))|safe}}
{{field(class="form-control", **kwargs)|safe}}
{%- if field.errors %} {%- for error in field.errors %} {% call _hz_form_wrap(horizontal_columns, form_type) %}

{{error}}

{% endcall %} {%- endfor %} {%- elif field.description -%} {% call _hz_form_wrap(horizontal_columns, form_type) %}

{{field.description|safe}}

{% endcall %} {%- endif %} {%- else -%} {{field.label(class="control-label")|safe}} {{field(class="form-control", **kwargs)|safe}} {%- if field.errors %} {%- for error in field.errors %}

{{error}}

{%- endfor %} {%- elif field.description -%}

{{field.description|safe}}

{%- endif %} {%- endif %}
{% endif %} {% endmacro %} {# valid form types are "basic", "inline" and "horizontal" #} {% macro quick_form(form, action="", method="post", extra_classes=None, role="form", form_type="basic", horizontal_columns=('lg', 2, 10), enctype=None, button_map={}) %}
{{ form.hidden_tag() }} {{ form_errors(form, hiddens='only') }} {%- for field in form %} {% if not bootstrap_is_hidden_field(field) -%} {{ form_field(field, form_type=form_type, horizontal_columns=horizontal_columns, button_map=button_map) }} {%- endif %} {%- endfor %}
{%- endmacro %}