read.markets/app/routers
Giorgio Gilestro 7acd191051 log: serve localized content from the HTMX endpoints
The /log page renders its content asynchronously by hitting
/api/log/latest?as=html and /api/log/by-date/{day}?as=html via HTMX.
Both endpoints returned StrategicLog.content (English) verbatim,
ignoring the new StrategicLogTranslation table entirely. The
_resolve_log_content helper I added to pages.py earlier was wired
into the page handlers themselves but never reached for HTMX swaps,
so Italian users only ever saw English content despite their
lang='it' preference being persisted and translations being
generated correctly.

Fix: add a _localized_content helper in api.py that looks up the
matching translation row for the requesting principal's lang.
_log_partial_payload gains a content_override arg; both HTMX
endpoints (log_latest, log_by_date) compute the override and pass
it through. JSON paths (?as= other than html) remain English to
avoid changing the public API contract.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 20:08:54 +02:00
..
__init__.py initial commit — cassandra v0.1 2026-05-15 21:56:10 +01:00
api.py log: serve localized content from the HTMX endpoints 2026-05-27 20:08:54 +02:00
auth.py ui: collapsible settings sections + welcome-email + larger auth inputs 2026-05-26 22:32:59 +02:00
email.py email: tighten unsubscribe — test isolation, accurate comments, tighter assertion 2026-05-25 23:10:29 +02:00
pages.py log: serve translated content when available; English fallback 2026-05-27 17:13:57 +02:00
polar_webhook.py stripe: per-cadence cooling-off + manage-subscription button 2026-05-26 20:06:19 +02:00
public.py stripe: wire checkout, customer portal, and webhook for read.markets 2026-05-26 18:45:13 +02:00
stripe_billing.py referrals: close D.3 — both parties get 45 days credit on conversion 2026-05-26 23:05:29 +02:00
sync.py sync: detect orphaned blobs (pepper rotation) + fix AESGCM arg order 2026-05-25 12:49:11 +02:00
ticker_validate.py ticker-validate: add /api/ticker/historical with weekend-walkback 2026-05-27 14:45:52 +02:00
universe.py cleanup: drop stale tombstones and dead config fields 2026-05-27 19:25:33 +02:00