{% extends "base.html" %} {% from "_lifetime.html" import lifetime %} {% block title %}{{ name }} · marks · The Booth{% endblock %} {% block html_attrs %} data-booth="{{ name }}"{% endblock %} {% block content %} {# The marks page for a booth whose own index.html is served VERBATIM. That page cannot render the panel inline (it is returned untouched by design), so the injected chip links here instead. Same forms, same POST targets — only the redirect differs, so answering lands back here rather than on the report. #}
‹ {{ name }}

Marks

{# `marks_open` comes from open_marks() — the ONE openness predicate (INV-2). This used to re-derive it in Jinja as `selectattr('answer', 'none')`, which read a half-answered pick as closed. #} {% if marks_open %}{{ marks_open }} open · {% endif %}{{ marks|length }} mark{{ '' if marks|length == 1 else 's' }} · {{ lifetime(kept, hold, expires_in) }}
{# One region around both branches, so answering the last mark away swaps in the empty state instead of reading as a structural change. #}
{% if marks %} {% include "_marks.html" %} {% else %}
This booth has no marks.
{% include "_marks.html" %} {% endif %}
{% endblock %}