Add exclusion support, multi-year history helper, and remove secrets from env.py

- draw.py/file_io.py/main.py: wire in exclusion pairs so the draw can avoid
  configured giver/receiver combinations.
- utils.py: add get_last_n_years helper.
- env.py: load configuration from environment variables (via .env) instead of
  hardcoding real SMTP/CSV secrets in a tracked file; add .env.example as the
  template and gitignore .env.
- test_draws.py: drop hardcoded personal path, use env.py config instead.
- add requirements.txt for the upcoming web GUI/container work.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-20 14:16:12 +02:00
parent 23c4276afb
commit 9e2f761544
10 changed files with 152 additions and 32 deletions
+18
View File
@@ -0,0 +1,18 @@
# Copy this file to .env and fill in your real values.
# .env is gitignored and is the only place secrets should live.
SMTP_SERVER=smtp.example.com
SMTP_PORT=25
SENDER_EMAIL=santa@example.com
CSV_PATH=path/to/your/csv/files
CSV_PREFIX=secret_santa_DB
HISTORY_YEARS=2
DRAW_PER_PERSON=2
# Optional overrides — {name}/{draws}/{year} placeholders are filled in at send time.
# EMAIL_SUBJECT=Secret Santa {year} Draw
# EMAIL_BODY="Hello {name},\n\nYou have been chosen to give gifts to: {draws}.\n"
# Web GUI basic-auth (leave unset to disable auth — not recommended outside localhost)
WEBAPP_USERNAME=admin
WEBAPP_PASSWORD=change-me