🐛(backend) fix dimail call despite mailbox creation failure on our side
When we try to create a duplicate email, a request to dimail is sent despite a reject on our side. To solve this issue, we call mailbox creation first to benefit from validation of our Django model. Mailbox creation try was called too late after dimail call. So in attempt to create a duplicated email a request to dimail was sent despite a failure in our side.
This commit is contained in:
@@ -35,8 +35,7 @@ class MailboxSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
Override create function to fire a request on mailbox creation.
|
||||
"""
|
||||
mailbox_status = enums.MailDomainStatusChoices.PENDING
|
||||
|
||||
mailbox = super().create(validated_data)
|
||||
if validated_data["domain"].status == enums.MailDomainStatusChoices.ENABLED:
|
||||
client = DimailAPIClient()
|
||||
# send new mailbox request to dimail
|
||||
@@ -48,8 +47,8 @@ class MailboxSerializer(serializers.ModelSerializer):
|
||||
mailbox_data = json.loads(
|
||||
response.content.decode("utf-8").replace("'", '"')
|
||||
)
|
||||
|
||||
mailbox_status = enums.MailDomainStatusChoices.ENABLED
|
||||
mailbox.status = enums.MailDomainStatusChoices.ENABLED
|
||||
mailbox.save()
|
||||
|
||||
# send confirmation email
|
||||
client.notify_mailbox_creation(
|
||||
@@ -57,7 +56,7 @@ class MailboxSerializer(serializers.ModelSerializer):
|
||||
)
|
||||
|
||||
# actually save mailbox on our database
|
||||
return models.Mailbox.objects.create(**validated_data, status=mailbox_status)
|
||||
return mailbox
|
||||
|
||||
|
||||
class MailDomainSerializer(serializers.ModelSerializer):
|
||||
|
||||
Reference in New Issue
Block a user