Add PCM carrier-route postcard pick-and-send (#15)
CI / test (pull_request) Successful in 24s

## Summary
Closes #15.
- Let compose target mailing-list contacts or 1–2 USPS carrier routes, with household count and estimated cost shown before save.
- Place selected routes through PCM list-count orders instead of importing occupant addresses into Contacts.
This commit is contained in:
westfarn committed 2026-09-21 15:26:32 -05:00
1 parent a867a57750
commit f7e3c05c59
17 files changed
+1211 -28

No files matched your search

@@ -0,0 +1,41 @@
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("messaging", "0006_storedfile_social_kinds"),
]
operations = [
migrations.AddField(
model_name="campaign",
name="route_targeting",
field=models.JSONField(blank=True, default=dict),
),
migrations.AlterField(
model_name="campaign",
name="audience",
field=models.CharField(
blank=True,
choices=[
("email_opt_in", "Mailing list · email opt-in"),
("sms_opt_in", "Mailing list · SMS opt-in"),
("postcard_opt_in", "Mailing list · postcard opt-in"),
("carrier_route", "USPS carrier routes"),
],
default="",
max_length=32,
),
),
migrations.AlterField(
model_name="message",
name="contact",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=models.CASCADE,
related_name="messages",
to="contacts.contact",
),
),
]