{% extends "layout/basic.html" %} {% block content %}
{# ── Page Header ──────────────────────────────────────────────────────── #}

{{ _('Batch Add Users to Contest') }} {% if tdoc %}— {{ tdoc.title }}{% endif %}

{# ── Instructions ──────────────────────────────────────────────────── #}

{{ _('One entry per line. Accepts any of the following per line:') }}

  • username
  • email@example.com
  • uid (numeric user ID)

{{ _('Comma or tab separated — only the first column is used.') }}

{{ _('Users already enrolled in the contest are silently skipped.') }}

{# ── Result messages ───────────────────────────────────────────────── #} {% if messages and messages|length %}
{% for m in messages %}{{ m }}
{% endfor %}
{% endif %} {# ── Import result summary ─────────────────────────────────────────── #} {% if stats %}
{% if stats.failed == 0 %} ✅ {{ _('Import complete.') }} {{ stats.added }} {{ _('user(s) added.') }} {% else %} ⚠️ {{ stats.added }} {{ _('added') }}, {{ stats.failed }} {{ _('failed') }}. {{ _('See log above for details.') }} {% endif %}
{% endif %} {# ── Form ─────────────────────────────────────────────────────────── #}
← {{ _('Back to Contest') }}
{# /section__body #}
{# /section #}
{# /medium-9 #} {# ── Sidebar ──────────────────────────────────────────────────────────── #}

{{ _('Tips') }}

{{ _('Use Preview first to validate the list without actually enrolling anyone.') | safe }}

{{ _('Then click Import to commit.') | safe }}

{{ _('Already-enrolled users and blank lines are automatically skipped.') }}


👥 {{ _('Manage individual users') }}

{% endblock %}