(dimail) send pending mailboxes upon domain activation

send creation requests to dimail for all pending mailboxes
when domain goes from "pending" to "enabled".
This commit is contained in:
Marie PUPO JEAMMET
2025-01-10 18:25:07 +01:00
committed by Marie
parent 9d9216cf39
commit cd94dc5091
7 changed files with 172 additions and 29 deletions

View File

@@ -36,23 +36,19 @@ class MailboxSerializer(serializers.ModelSerializer):
Override create function to fire a request on mailbox creation.
"""
mailbox = super().create(validated_data)
if validated_data["domain"].status == enums.MailDomainStatusChoices.ENABLED:
if mailbox.domain.status == enums.MailDomainStatusChoices.ENABLED:
client = DimailAPIClient()
# send new mailbox request to dimail
response = client.create_mailbox(
validated_data, self.context["request"].user.sub
)
response = client.create_mailbox(mailbox, self.context["request"].user.sub)
# fix format to have actual json, and remove uuid
mailbox_data = json.loads(
response.content.decode("utf-8").replace("'", '"')
)
# fix format to have actual json
dimail_data = json.loads(response.content.decode("utf-8").replace("'", '"'))
mailbox.status = enums.MailDomainStatusChoices.ENABLED
mailbox.save()
# send confirmation email
client.notify_mailbox_creation(
recipient=validated_data["secondary_email"], mailbox_data=mailbox_data
recipient=mailbox.secondary_email, mailbox_data=dimail_data
)
# actually save mailbox on our database