sipa/templates/macros/forms.html

Summary

Maintainability
Test Coverage
{% macro render_field(field, focus=false) -%}
    {% if field.description %}{% set description = field.description %}{% endif %}
    {{ field(class="form-control", placeholder=description, autofocus=first) }}
{%- endmacro %}

{% macro render(form, form_id='form', reset_button=False, cancel_to=None, submit_text=_("Abschicken"), cancel_text=_("Abbrechen"), extra_btn=None, links=None) -%}
    <div id="{{ form_id }}" class="container col-sm-10">
        <form action="" method="post" class="form form-horizontal">
            {{ form.csrf_token }}
            {% for field in form -%}{% if field and field.id != 'csrf_token' %}
                {% if loop.index0 == 0 %}{% set focus = true %}{% endif %}
                <div class="row mb-3 {% if field.errors %}has-error{% endif %}">
                    {% if field.type == "BooleanField" %}
                        <div class="{{ form_input_offset_class }} {{ form_input_width_class }}">
                            {% set label=field.label(class_="form-check-label") %}
                            <div class="form-check">
                                <!-- `for="{field.id}"` included in `form.label()` rendering -->
                                <!--suppress HtmlFormInputWithoutLabel -->
                                <input id="{{ field.name }}" type="checkbox" class="form-check-input" name="{{ field.name }}"
                                    {{ 'checked' if field.data | default(field.default) }}>
                                {% if links %}{{ label | render_links(links) | safe }}
                                {% else %}{{ label }}{% endif %}
                            </div>
                        </div>
                    {% elif field.type != "HiddenField" %}
                        <div class="{{ form_label_width_class }} col-form-label">
                            {{ field.label() }}
                        </div>
                        <div class="{{ form_input_width_class }}">
                            {{ render_field(field, focus=focus) }}
                        </div>
                    {% endif %}
                </div>
            {% endif %}{%- endfor %}

            {# Here can things like notes or alerts be placed #}
            {{ caller() }}

            <div class="form-group">
                <div class="{{ form_input_offset_class }} {{ form_input_width_class }} text-nowrap">
                    <button type="submit" class="btn btn-primary">{{ submit_text }}</button>
                    {% if reset_button -%}
                        <button type="reset" class="btn btn-secondary">{{ _('Zurücksetzen') }}</button>
                    {%- endif %}
                    {% if cancel_to -%}
                        <a href="{{ cancel_to }}" class="btn btn-secondary">{{ cancel_text }}</a>
                    {%- endif %}
                    {% if extra_btn -%}{{ extra_btn() }}{%- endif %}
                </div>
            </div>
        </form>
    </div>
{%- endmacro %}

{% macro render_simple() -%}
    {% call render(**kwargs) %}{% endcall %}
{%- endmacro %}