{# T55 admin — tweet templates CRUD (Step 7). Soft-delete-only (archive sets is_active=False); never DELETE. #} templates — browser-recon admin {% include 'partials/admin_t55_styles.html' %} {% include 'partials/admin_t55_chrome.html' %}
07 — tweet templates

Body, position, active. CRUD-shaped.

Templates surface on the join email + the public waitlist page. Archive (soft-delete) flips is_active to false; rows stay in the DB so the rendered tweets in old emails keep matching. Order by sort_order ascending.

existing {{ rows|selectattr('is_active')|list|length }} active / {{ rows|length }} total
{% if not rows %}
// no templates yet. add one below.
{% else %} {% for row in rows %} {% set is_editing = (edit_id == row.id) %} {% endfor %}
sort body status updated action
{{ row.sort_order }} {% if is_editing %}
{% else %}
{{ row.body }}
{% endif %}
{% if row.is_active %} active {% else %} archived {% endif %} {{ row.updated_at_display }}
{% if is_editing %} cancel {% else %} edit {% if row.is_active %}
{% endif %} {% endif %}
{% endif %}
add new