{# The speaker's profile fields (#159, #246): aggregate provenance chip, 3-column grid (ROLE / ORGANIZATION / LINKS), manual edit/clear forms. Included by profile.html and ALSO rendered out-of-band (profile_oob=true) by the research-decision response, so an accepted claim shows up here without a reload. Archived speakers render read-only (no forms). #}

Profile

{% if profile.values()|list %} {% set has_accepted = profile.values()|selectattr("provenance", "eq", "enrichment")|list %} {% if has_accepted %}filled in by web research{% else %}entered by hand{% endif %} — edit anything {% endif %}
{% if profile_error %}{% endif %}
hideshow
{% for field in profile_fields %} {% set row = profile.get(field) %} {% set col_label = {"bio": "ROLE", "affiliation": "ORGANIZATION", "link": "LINKS"} %}
{{ col_label.get(field, field|upper) }}
{% if row %} {% if field == "link" and (row.value.startswith("https://") or row.value.startswith("http://")) %} {{ row.value }} {% else %}{{ row.value }}{% endif %} {% else %} not set {% endif %} {% if not archived %}
{% if row %}
{% endif %} {% endif %}
{% endfor %}
{% if speaker.notes %}

Notes

{{ speaker.notes }}

{% endif %}