newsletter: combined improvements (templates, CSS, sender, action-data generator)
Combines !75 (closed) + !76 (closed) + !77 (closed) into one reviewable branch (Catalyst request - easier local testing). Contains:
Templates (polish + CSS)
- Quoted src/href template vars; mtm_ tracking kept as-is per Catalyst
- ongoingActions hardcoded intro replaced with generic copy
- Typo sweep (N'hesites, coeur, parti, envoie, deprendre...)
- Client-safe CSS: .cta a / a.cta text-decoration none (classic Outlook), .action-detail img display:block
Sender script (send-email2list.py)
- --dev help text un-inverted (was describing the opposite of the flag)
- Malformed CSV lines skip+log instead of crashing the run
- --sleep/--start-id documented; DEV MODE warning; dup imports dropped
New: scripts/update-action-data.py
- Regenerates action-data.json from live instance APIs (active actions, resolved shortlinks, truncated blurbs)
- Stdlib only; test with --dry-run; suggested crontab in !75 (closed)
Verification: all 8 edited templates render clean through Django engine (both cofounder branches); grep sweeps clean; headless-Chromium visual checks passed.
Supersedes !75 (closed), !76 (closed), !77 (closed) (close after merge). Separate repos unaffected: !38 (merged) (risefor-lobbying contact.py), !5 (merged) (law-tracker URL).