Split out of the combined D1.2 mail-adoption issue (community-base plan phase 1). Depends on #370 (D1.2b, landed).
Scope:
- Delete
course_management/datamailer* (the client package, its payloads, sync modules, templates registry), email_app/ (donor PendingUnsubscribe, replay jobs, relay links), the data app (DatamailerOutboxEvent, DatamailerSendAudit, dispatch runs), and studio_courses/views/datamailer*.py with their templates. Studio email pages come from the package.
- P6 second PR: delete the donor models kept read-only since D1.2a/D1.2b; migrations drop their tables. Migration rehearsal with counts (P14) before landing; development-copy counts recorded in the PR.
- Link bridge URLs keep their exact paths;
RELAY_LINK_BRIDGE_* settings become COMMUNITY_BASE keys declared by the mail app.
- Retire the retained datamailer outbox storage from D1.2b (P6 step 4): storage goes read-only-to-dropped with the rollback window closed by the D1.2a/D1.2b dev deploys.
Non-goals:
- No Relay-side changes; the R1.x catalog/callback contracts stay as pinned.
- No new mail purposes; the five D1.2b purposes are unchanged.
Verification:
grep -rln datamailer --include=*.py . | grep -v migrations -> nothing.
- Open pixel and click bridge respond as before (existing contract tests).
- Fresh-database and development-copy migrations; table-drop rehearsal with counts.
- Full gate set: ruff check/format, makemigrations --check, mypy, Django suites per the change-selection plan.
Not run here: production freeze activities (D1.3, separate issue).
Split out of the combined D1.2 mail-adoption issue (community-base plan phase 1). Depends on #370 (D1.2b, landed).
Scope:
course_management/datamailer*(the client package, its payloads, sync modules, templates registry),email_app/(donor PendingUnsubscribe, replay jobs, relay links), thedataapp (DatamailerOutboxEvent, DatamailerSendAudit, dispatch runs), andstudio_courses/views/datamailer*.pywith their templates. Studio email pages come from the package.RELAY_LINK_BRIDGE_*settings becomeCOMMUNITY_BASEkeys declared by the mail app.Non-goals:
Verification:
grep -rln datamailer --include=*.py . | grep -v migrations-> nothing.Not run here: production freeze activities (D1.3, separate issue).