5393feefc5
- webapp/: FastAPI dashboard to add/remove participants and exclusions, view draw history, and trigger the draw (reuses main.run_draw()). Optional HTTP basic auth via WEBAPP_USERNAME/WEBAPP_PASSWORD. - file_io.py: add add/remove_participant, add/remove_exclusion, load_year helpers backing the web GUI's CRUD actions. - Dockerfile + docker-compose.yml: containerize the web GUI, with CSV_PATH bind-mounted to a host folder so participant data persists outside the container. Verified with a local docker compose build/up smoke test. - README: document the web GUI, Docker usage, and the exclusions CSV file (existing feature that wasn't documented yet). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
28 lines
689 B
HTML
28 lines
689 B
HTML
{% extends "base.html" %}
|
|
{% block title %}History - Random Christmas Bot{% endblock %}
|
|
{% block content %}
|
|
|
|
{% for year, rows in year_data %}
|
|
<section class="card">
|
|
<h2>{{ year }}</h2>
|
|
{% if rows %}
|
|
<table>
|
|
<thead><tr><th>Giver</th><th>Email</th><th>Recipients</th></tr></thead>
|
|
<tbody>
|
|
{% for row in rows %}
|
|
<tr>
|
|
<td>{{ row[0] }}</td>
|
|
<td>{{ row[1] }}</td>
|
|
<td>{{ row[2:]|join(", ") }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
{% else %}
|
|
<p class="hint"><em>No data for this year.</em></p>
|
|
{% endif %}
|
|
</section>
|
|
{% endfor %}
|
|
|
|
{% endblock %}
|