{% macro render_field_required_star(field) %} {%- if is_required_form_field(field) %}*{% endif -%} {% endmacro %} {% macro render_field(field) %} {%- if field.widget.input_type == 'submit' %} {{ field(**kwargs) }} {%- else %} {%- set direct_error = field.errors | length %} {%- if field.widget.input_type == 'checkbox' %} {%- set _ = kwargs.setdefault('class', 'form-check-input') %} {%- elif field.widget.input_type == 'file' %} {%- set _ = kwargs.setdefault('class', 'form-control-file') %} {%- else %} {%- set _ = kwargs.setdefault('class', 'form-control') %} {%- endif %} {%- if direct_error %} {%- set _ = kwargs.update({'class': kwargs['class'] ~ ' is-invalid'}) %} {%- endif -%} {%- set prepend = kwargs.pop('prepend', None) %} {%- set append = kwargs.pop('append', None) -%} {%- set group_class="form-group" %} {%- if field.widget.input_type == 'checkbox' %} {%- set group_class=group_class+" form-check" %} {% endif %} {%- if kwargs.get('column_class') %} {%- set group_class=group_class+" "+kwargs.get('column_class') %} {% endif %}
{%- if field.widget.input_type != 'checkbox' %} {{ field.label }} {{ render_field_required_star(field) }} {%- endif %} {%- if prepend or append %}
{%- if prepend -%}
{{ prepend }}
{%- endif -%} {%- endif %} {{ field(**kwargs) | safe }} {# label for checkbox #} {%- if field.widget.input_type == 'checkbox' %}{{ field.label(class_="form-check-label") }} {{ render_field_required_star(field) }}{% endif %} {%- if append -%}
{{ append }}
{%- endif -%} {%- if direct_error %}
    {% for e in field.errors %}
  • {{ e }}
  • {% endfor %}
{%- elif field.description %} {{ field.description|safe }} {%- endif %} {%- if prepend or append %}
{%- endif %}
{%- endif %} {% endmacro %} {% macro render_form_field(form, field, kwargs={}) %} {{ render_field(field,**kwargs) }} {% endmacro %} {% macro render_form_rule(rule, form, form_opts) %} {%- if rule.type == 'text' %} {{ rule(form, from_opts) }} {%- elif rule.type == 'field' %} {% set params=rule.get_params(form, form_opts) %} {{ render_form_field(form, params.field, params.kwargs) }} {%- elif rule.type == 'nest' %} {% for r in rule.rules %} {% if not loop.first %} {{ rule.separator|safe }} {% endif %} {{ render_form_rule(r, form, form_opts) }} {% else %} {% endfor %} {%- elif rule.type == 'row' %}
{% for r in rule.rules %} {{ render_form_rule(r, form, form_opts) }} {% endfor %}
{%- else %} {{ rule.type or 'rule.type is None' }} {%- endif %} {% endmacro %} {% macro render_form_fields(form, form_opts=None) %} {% if form_opts and form_opts.form_rules %} {% for r in form_opts.form_rules %} {{ render_form_rule(r, form, form_opts) }} {% endfor %} {% else %} {% for f in form if f.widget.input_type != 'hidden' %} {% if form_opts %} {% set kwargs = form_opts.widget_args.get(f.short_name, {}) %} {% else %} {% set kwargs = {} %} {% endif %} {{ render_form_field(form, f, kwargs) }} {% endfor %} {% endif %} {% for f in form if f.widget.input_type == 'hidden' %} {{ f }} {% endfor %} {% endmacro %} {% macro render_form_buttons(cancel_url, extra=None) %}
{% if extra %}{{ extra }}{% endif %} {% if cancel_url %} {{ gettext('Cancel') }} {% endif %}
{% endmacro %} {% macro render_modal_form_buttons(cancel_url, extra=None) %} {% if extra %}{{ extra }}{% endif %} {% if cancel_url %} {{ gettext('Cancel') }} {% endif %} {% endmacro %} {% macro render_form(form, cancel_url, extra=None, form_opts=None, action=None) -%}
{{ render_form_fields(form, form_opts=form_opts) }} {{ render_form_buttons(cancel_url, extra) }}
{% endmacro %} {% macro render_modal_form(form, cancel_url, extra=None, form_opts=None, action=None) -%}
{% endmacro %} {% macro extra(view) %} {% if view.can_create %} {% endif %} {% if view.can_edit %} {% endif %} {% endmacro %}