File: //home/arjun/projects/buyercall_forms/buyercall/buyercall/templates/macros/form.jinja2
{# Render a form field's label with visual aid to see if it's required. #}
{%- macro field_label(field) -%}
<label for="{{ field.id }}" class="control-label">
{%- if field.flags and field.flags.required -%}
{{ field.label.text }}
{%- elif field.label %}
{{ field.label.text }}
{%- endif %}
</label>
{%- endmacro -%}
{# Render a form field's errors. #}
{%- macro field_errors(f) -%}
{% if f.errors %}
<ul class="list-unstyled text-danger field-error">
{% for error in f.errors %}
<li>{{ error | e }}</li>
{% endfor %}
</ul>
{% endif %}
{%- endmacro -%}
{# Render a form field. #}
{%- macro field(f, css_class='form-control') -%}
{{ f(class=css_class, **kwargs) }}
{%- endmacro -%}
{# Render a password form field. #}
{%- macro password_field(f, css_class='form-control') -%}
<div class="input-group" style="display:block;">
{{ f(class=css_class, **kwargs) }}
<a href="#" class="toggle_hide_password">
<i class="fa fa-eye-slash field-icon" aria-hidden="true"></i>
</a>
</div>
{%- endmacro -%}
{# Render a checkbox field. #}
{%- macro checkbox_field(f) -%}
{{ f(type='checkbox', **kwargs) }} {{ f.label }}
{%- endmacro -%}
{# Render a file field. #}
{%- macro file_field(f, css_class='') -%}
{{ f(class=css_class, **kwargs) }}
{%- endmacro -%}
{# Render a Bootstrap 3 form group with errors for various field types. #}
{%- macro password_form_group(f, css_class='') -%}
{% if f.errors %}
{% set css_class = css_class + ' has-error ' + kwargs.pop('class', '') %}
{% endif %}
<div>
{{ field_label(f) }}
{{ password_field(f, **kwargs) }}
</div>
{%- endmacro -%}
{%- macro form_group(f, css_class='') -%}
{% if f.errors %}
{% set css_class = css_class + ' has-error ' + kwargs.pop('class', '') %}
{% endif %}
{% if f.type == 'BooleanField' %}
<div class="checkbox">
<label>
{{ checkbox_field(f, **kwargs) }}
</div>
{% elif f.type == 'FileField' %}
<span class="btn btn-warning btn-round btn-file">
<span class="fileinput-new"> Select Image </span>
{{ file_field(f, **kwargs) }}
</span>
{% else %}
<div>
{{ field_label(f) }}
{{ field(f, **kwargs) }}
</div>
{% endif %}
<div>
{{ field_errors(f) }}
{{ caller () }}
</div>
{%- endmacro %}
{# Render a form tag that contains a CSRF token and all hidden fields, it also
properly supports all HTTP version, simply pass in method='delete', etc.. #}
{%- macro form_tag(endpoint, fid='', class='', method='post') -%}
{% set method = method | lower %}
{% set browser_method = 'post' %}
{% set real_method = 'post' %}
{% if method == 'get' %}
{% set browser_method = 'get' %}
{% set real_method = 'get' %}
{% elif method not in ('get', 'post') %}
{% set browser_method = 'post' %}
{% set real_method = method %}
{% endif %}
<form action="{{ url_for(endpoint, **kwargs) }}"
method="{{ browser_method }}"
id="{{ fid }}" class="{{ class }}" role="form">
{{ form.hidden_tag() }}
{{ caller () }}
</form>
{%- endmacro -%}
{# Render a form for searching. #}
{%- macro search(endpoint) -%}
{% call form_tag(endpoint, class='top-margin', method='get') %}
<div class="input-group sm-margin-bottom">
<input type="text" class="form-control"
id="q" name="q" value="{{ request.args.get('q', '') }}"
placeholder="Search by typing, then press enter...">
<span class="input-group-addon">
<i class="material-icons">search</i>
</span>
</div>
{% endcall %}
{%- endmacro -%}