{% macro form_errors(form) %}
  {% if form.errors %}
    {% for fieldname, errors in form.errors.items() %}
      {% if bootstrap_is_hidden_field(form[fieldname]) %}
        {% for error in errors %}
          <p class="error">{{error}}</p>
        {% endfor %}
      {% endif %}
    {% endfor %}
  {% endif %}
{% endmacro %}

{% macro form_field_errors(field) %}
  {% if field.errors %}
    {% for error in field.errors %}
      <p class="help-block inline">{{ error }}</p>
    {% endfor %}
  {% endif %}
{% endmacro %}

{% macro form_fields(fields, prepend='', append='', label=True) %}
  {% set width = (12 / fields|length)|int %}
  <div class="form-group">
    <div class="row">
      {% for field in fields %}
      <div class="col-lg-{{ width }} col-xs-12 {{ 'has-error' if field.errors else '' }}">
        {{ form_individual_field(field, prepend=prepend, append=append, label=label, **kwargs) }}
      </div>
      {% endfor %}
    </div>
  </div>
{% endmacro %}

{% macro form_individual_field(field, prepend='', append='', label=True) %}
  {% if field.type == "BooleanField" %}
    {{ field(**kwargs) }}<span>&nbsp;&nbsp;</span>
    {{ field.label if label else '' }}
  {% else %}
    {{ field.label if label else '' }}{{ form_field_errors(field) }}
    {% if prepend or append %}<div class="input-group">{% endif %}
      {{ prepend|safe }}{{ field(class_="form-control", **kwargs) }}{{ append|safe }}
    {% if prepend or append %}</div>{% endif %}
  {% endif %}
{% endmacro %}

{% macro form_field(field) %}
  {% if field.type == 'SubmitField' %}
  {{ form_fields((field,), label=False, class="btn btn-default", **kwargs) }}
  {% else %}
  {{ form_fields((field,), **kwargs) }}
  {% endif %}
{% endmacro %}

{% macro form(form) %}
<form class="form" method="post" role="form">
  {{ form.hidden_tag() }}
  {% for field in form %}
    {% if  bootstrap_is_hidden_field(field) %}
      {{ field() }}
    {% else %}
      {{ form_field(field) }}
    {% endif %}
  {% endfor %}
</form>
{% endmacro %}

{% macro box(title=None, theme="primary", header=True) %}
<div class="row">
  <div class="col-lg-12">
    <div class="box box-{{ theme }}">
      {% if header %}
      <div class="box-header">
        {% if title %}
        <h3 class="box-title">{{ title }}</h3>
        {% endif %}
      </div>
      {% endif %}
      <div class="box-body">
       {{ caller() }}
      </div>
    </div>
  </div>
</div>
{% endmacro %}

{% macro table(theme="primary") %}
<div class="row">
  <div class="col-lg-12">
    <div class="box box-{{ theme }}">
      <table class="table table-bordered">
        <tbody>
          {{ caller() }}
        </tbody>
      </table>
    </div>
  </div>
</div>
{% endmacro %}
