D1.2ca Send the remaining datamailer mail through the package mail app and retire the datamailer client
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
Research direction
First confirm D1.2b is done in docs/plan/STATUS.md, then read docs/plan/phase-1.md section D1.2ca, AGENTS.md, _docs/PROCESS.md, and _docs/specs/. Trace the named email_templates/, community_base.mail.send, preference page and MAIL_PREFERENCE_RESOLVER entry points; verify with the listed grep, manage.py checks, lint/type checks, and affected Django suites that no product path contacts datamailer.
Written by the indexing model from the issue text.
Description
Plan issue D1.2ca, phase 1 of the community-base unification plan.
Spec: docs/plan/phase-1.md, section D1.2ca, in DataTalksClub/community-base. Status is tracked in docs/plan/STATUS.md there, which stays the source of truth.
Depends on: D1.2b. Do not start until every one of them is done in STATUS.md.
Currently blocked in STATUS.md: website#372 branch issue-372 gates green; dev deploy blocked on a fully green main CI run (website#345: the corpus-bound django test clusters are fixed, merged as website fc534fcf; the Playwright lane remains in flight); worker self-check IAM grant merged as aws-infra 3acefe43 but not yet effective: the protected development apply is blocked on the sandbox-account trust-policy bootstrap (aws-infra#56)
Process
This repository's AGENTS.md and _docs/PROCESS.md govern this work, with _docs/specs/ as the product authority. The plan says what to build and how to verify it; the site process says how work is done here.
Spec
Repository: DataTalksClub/website. Depends on: D1.2b. Split from the combined retirement issue for one-landing scoping.
Steps
- Commit the remaining datamailer purposes as templates in
email_templates/(homework
submission confirmation, homework score notification, project score notification, peer
review assignment) and send them throughcommunity_base.mail.sendwith replay-safe keys
derived from the business objects the datamailer idempotency keys used. - Replace the remote datamailer preference store: the three category opt-outs become fields
on the site user, the account email-preferences page reads and writes them, and the site
MAIL_PREFERENCE_RESOLVERsuppresses on an explicit opt-out (unset and userless sends
stay allowed; Relay-side global unsubscribe still applies). Provide a command that imports
opt-outs from a datamailer preferences export; the production import is an operator step
before the D1.3 freeze. - Delete
course_management/datamailer*,course_management/datamailer_templates/,
course_management/email_templates.py, thecourse_management/datamailer_outbox_*
modules, the datamailer campaign/status/audit/sync management commands, the studio
datamailer views and their URL entries, the datamailer send-audits API view and the
datamailer webhook route. Studio email pages come from the package.
Verification
grep -rln datamailer --include=*.py . | grep -v migrationslists onlyemail_app/and
data/remnants.manage.py check,makemigrations --check --dry-run, ruff check/format, mypy; the
affected Django suites pass.
Done when
- no product code path contacts the datamailer; every send goes through the package
- Dominant language
- Python
- Stars
- 0
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Getting set up
- Ships a Dockerfile or Docker Compose file
- No pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from DataTalksClub/website
-
bug infra operations P1 testing
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
DataTalksClub/website#329 ·
-
bug content data-migration documentation events operations P1
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
DataTalksClub/website#327 ·
-
bug frontend P0 testing
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
DataTalksClub/website#300 · 7 comments ·
-
bug data-migration events P0 testing
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
DataTalksClub/website#295 · 6 comments ·
-
courses enhancement P1
Difficulty 5/5 Over a week Newbie friendliness 25/100
DataTalksClub/website#446 · 1 comment ·
All issues in DataTalksClub/website
Similar issues
-
customer-reported
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Azure/azure-cli#34150 · 1 comment ·
Maintainers usually reply within 1 day
-
community-request
Difficulty 1/5 Under an hour Newbie friendliness 95/100
NVIDIA-NeMo/Curator#2464 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
WeblateOrg/translation-finder#1099 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
trezor/trezor-firmware#7997 ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Maintainers usually reply within 1 day