fix(campaign): sanitize synchronous send results

This commit is contained in:
2026-07-22 09:21:44 +02:00
parent 1225802c5d
commit f095a3e2c7
3 changed files with 241 additions and 5 deletions

View File

@@ -117,6 +117,8 @@ from govoplan_campaign.backend.reports.aggregate import (
from govoplan_campaign.backend.response_security import (
public_campaign_payload,
public_delivery_result_message,
public_send_campaign_now_result,
send_campaign_now_audit_details,
)
from govoplan_campaign.backend.reports.emailing import CampaignReportEmailError, send_campaign_report_email
from govoplan_campaign.backend.persistence.campaigns import (
@@ -3580,7 +3582,7 @@ def send_campaign_now_endpoint(
detail="Campaign version must be built before dry-run or sending.",
)
result = send_campaign_now(
delivery_result = send_campaign_now(
session,
tenant_id=principal.tenant_id,
campaign_id=campaign_id,
@@ -3590,18 +3592,21 @@ def send_campaign_now_endpoint(
use_rate_limit=payload.use_rate_limit,
enqueue_imap_task=payload.enqueue_imap_task,
).as_dict()
result["validation"] = validation_result
result["build"] = build_result
response_result = public_send_campaign_now_result(
delivery_result,
validation_summary=validation_result,
build_summary=build_result,
)
audit_from_principal(
session,
principal,
action="campaign.sent_now" if not payload.dry_run else "campaign.send_now_dry_run",
object_type="campaign",
object_id=campaign_id,
details=result,
details=send_campaign_now_audit_details(delivery_result),
commit=True,
)
return SendCampaignNowResponse(result=result)
return SendCampaignNowResponse(result=response_result)
except SynchronousSendRejected as exc:
audit_from_principal(
session,