Consume governed recipients and add operational checks
This commit is contained in:
@@ -19,6 +19,7 @@ from govoplan_campaign.backend.schemas import (
|
||||
CampaignRecipientAddressSourcesResponse,
|
||||
CampaignRecipientAddressSourceSnapshotRequest,
|
||||
CampaignRecipientAddressSourceSnapshotResponse,
|
||||
CampaignRecipientSnapshotExcludedItem,
|
||||
CampaignRecipientSnapshotItem,
|
||||
RecipientImportMappingProfileListResponse,
|
||||
RecipientImportMappingProfilePayload,
|
||||
@@ -764,7 +765,11 @@ def snapshot_campaign_recipient_address_source(
|
||||
)
|
||||
try:
|
||||
snapshot = getattr(capability, "snapshot")(
|
||||
session, principal, source_id=payload.source_id
|
||||
session,
|
||||
principal,
|
||||
source_id=payload.source_id,
|
||||
purpose=payload.purpose,
|
||||
requested_channels=("email",),
|
||||
)
|
||||
except ValueError as exc:
|
||||
raise HTTPException(
|
||||
@@ -775,6 +780,15 @@ def snapshot_campaign_recipient_address_source(
|
||||
CampaignRecipientSnapshotItem.model_validate(_capability_payload(item))
|
||||
for item in snapshot_payload.get("recipients", [])
|
||||
]
|
||||
excluded = [
|
||||
CampaignRecipientSnapshotExcludedItem.model_validate(_capability_payload(item))
|
||||
for item in snapshot_payload.get("excluded", [])
|
||||
]
|
||||
provenance = (
|
||||
snapshot_payload.get("provenance")
|
||||
if isinstance(snapshot_payload.get("provenance"), dict)
|
||||
else {}
|
||||
)
|
||||
return CampaignRecipientAddressSourceSnapshotResponse(
|
||||
source_id=str(snapshot_payload.get("source_id") or ""),
|
||||
source_label=str(snapshot_payload.get("source_label") or ""),
|
||||
@@ -782,9 +796,16 @@ def snapshot_campaign_recipient_address_source(
|
||||
source_revision=str(snapshot_payload.get("source_revision") or ""),
|
||||
generated_at=str(snapshot_payload.get("generated_at") or ""),
|
||||
recipients=recipients,
|
||||
provenance=snapshot_payload.get("provenance")
|
||||
if isinstance(snapshot_payload.get("provenance"), dict)
|
||||
else {},
|
||||
excluded=excluded,
|
||||
included_count=len(recipients),
|
||||
excluded_count=len(excluded),
|
||||
purpose=str(snapshot_payload.get("purpose") or payload.purpose),
|
||||
provenance={
|
||||
**provenance,
|
||||
"campaign_id": campaign_id,
|
||||
"purpose": payload.purpose,
|
||||
"requested_channels": ["email"],
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user