{% extends "themes/whitelabel/crud/tab_view.html" %} {% from 'themes/whitelabel/crud/_macros.html' import render_field, render_form_errors, render_newrel_panel %} {# render_child_field: renders a child form field without needing the parent view's search endpoints. Related/ManyRelated fields use plain selects. All other types delegate to the standard render_field macro (view is unused for those types, so passing none is safe). #} {% macro render_child_field(construct, field, type, data, ds, child_url=none, errors=none) %} {% if type.readonly and type.field_type not in ('list',) %}
{% set value = type.format_value(field, data) if data else "" %}

{{ value }}

{% elif type.field_type == 'related' %} {% if child_url %} {% set _pv = namespace(url=child_url) %} {{ render_field(construct, field, type, _pv, data, ds, errors=errors) }} {% else %}
{% set current = type.form_value(data) if data else none %}
{% endif %} {% elif type.field_type == 'manyrelated' %} {% if child_url %} {% set _pv = namespace(url=child_url) %} {{ render_field(construct, field, type, _pv, data, ds, errors=errors) }} {% else %}
{% set current_items = type.form_value(data) if data else [] %} {% set all_items = type.related_class().search()[0] %} {% set staged_field = ((data.many_related_new if data else none) or {}).get(field) or {} %}

{{ construct.t("crud-select") }}

{% if type.create == 'quick' %} {% set staged_quick = staged_field.get('quick') or [] %} {% elif type.create == 'form' %} {% set staged_new = staged_field.get('new') or [] %} {{ render_newrel_panel(construct, field, type, 0, staged_new[0] if staged_new else none, errors, closable=False) }} {% endif %}
{% endif %} {% else %} {{ render_field(construct, field, type, none, data, ds, errors=errors) }} {% endif %} {% endmacro %} {% block tab_content %} {% if edit_actions %}
{% for action in edit_actions %} {{ icon(action.icon, style="font-size: 14px;") }} {{ construct.t(action.name) }} {% endfor %}
{% endif %}
{{ csrf_field() }} {% if request.values.get('next') %}{% endif %} {{ render_form_errors(construct, errors) }} {% for field, type in child_fields %} {{ render_child_field(construct, field, type, form_data, ds, child_url=child_url, errors=errors) }} {% endfor %}
{{ icon("cancel", style="font-size: 14px;") }} {{ construct.t("crud-cancel-button") }}
{% endblock %}