Fence Mail provider and mailbox recovery effects
This commit is contained in:
@@ -22,6 +22,10 @@ from govoplan_mail.backend.db.models import (
|
||||
MailDeliveryReconciliation,
|
||||
)
|
||||
from govoplan_mail.backend.mail_profiles import MailProfileError
|
||||
from govoplan_mail.backend.recovery import (
|
||||
MailRecoveryError,
|
||||
reconcile_outbox_provider_effect,
|
||||
)
|
||||
from govoplan_mail.backend.sending.smtp import SmtpConfigurationError, SmtpSendError
|
||||
|
||||
|
||||
@@ -606,6 +610,11 @@ def _process_claimed(
|
||||
expected_smtp_transport_revision=command.expected_smtp_transport_revision,
|
||||
smtp_server_id=command.smtp_server_id,
|
||||
smtp_credential_id=command.smtp_credential_id,
|
||||
recovery_effect_id=(
|
||||
f"outbox:{command.id}:smtp-attempt:{attempt.attempt_number}"
|
||||
),
|
||||
recovery_resource_type="mail_delivery_command",
|
||||
recovery_resource_id=command.id,
|
||||
)
|
||||
except SmtpSendError as exc:
|
||||
if exc.outcome_unknown:
|
||||
@@ -758,6 +767,15 @@ def reconcile_delivery_command(
|
||||
clean_evidence = _bounded_text(evidence_reference)
|
||||
if not clean_evidence:
|
||||
raise MailDeliveryStateError("An evidence reference is required")
|
||||
try:
|
||||
reconcile_outbox_provider_effect(
|
||||
command_id=command.id,
|
||||
effect_occurred=clean_decision == "accepted",
|
||||
evidence_reference=clean_evidence,
|
||||
user_id=user_id,
|
||||
)
|
||||
except MailRecoveryError as exc:
|
||||
raise MailDeliveryStateError(str(exc)) from exc
|
||||
item = MailDeliveryReconciliation(
|
||||
command_id=command.id,
|
||||
decision=clean_decision,
|
||||
|
||||
Reference in New Issue
Block a user