✨(dimail) automate allows requests to dimail
Automatically send user creation and allow creation requests to dimail upon creating domain access.
This commit is contained in:
committed by
Marie
parent
cf155dc033
commit
54120eb179
@@ -99,7 +99,7 @@ class MailDomainSerializer(serializers.ModelSerializer):
|
||||
client.create_domain(validated_data["name"], self.context["request"].user.sub)
|
||||
|
||||
# no exception raised ? Then actually save domain on our database
|
||||
return models.MailDomain.objects.create(**validated_data)
|
||||
return super().create(validated_data)
|
||||
|
||||
|
||||
class MailDomainAccessSerializer(serializers.ModelSerializer):
|
||||
@@ -169,6 +169,7 @@ class MailDomainAccessSerializer(serializers.ModelSerializer):
|
||||
raise exceptions.PermissionDenied(
|
||||
"You are not allowed to manage accesses for this domain."
|
||||
)
|
||||
|
||||
# only an owner can set an owner role to another user
|
||||
if (
|
||||
role == enums.MailDomainRoleChoices.OWNER
|
||||
@@ -183,6 +184,23 @@ class MailDomainAccessSerializer(serializers.ModelSerializer):
|
||||
)
|
||||
return attrs
|
||||
|
||||
def create(self, validated_data):
|
||||
"""
|
||||
Override create function to fire requests to dimail on access creation.
|
||||
"""
|
||||
dimail = DimailAPIClient()
|
||||
|
||||
if validated_data["role"] in [
|
||||
enums.MailDomainRoleChoices.ADMIN,
|
||||
enums.MailDomainRoleChoices.OWNER,
|
||||
]:
|
||||
dimail.create_user(validated_data["user"].sub)
|
||||
dimail.create_allow(
|
||||
validated_data["user"].sub, validated_data["domain"].name
|
||||
)
|
||||
|
||||
return super().create(validated_data)
|
||||
|
||||
|
||||
class MailDomainAccessReadOnlySerializer(MailDomainAccessSerializer):
|
||||
"""Serialize mail domain access for list and retrieve actions."""
|
||||
|
||||
@@ -51,10 +51,12 @@ class MailDomainViewSet(
|
||||
"""Set the current user as owner of the newly created mail domain."""
|
||||
|
||||
domain = serializer.save()
|
||||
models.MailDomainAccess.objects.create(
|
||||
user=self.request.user,
|
||||
domain=domain,
|
||||
role=core_models.RoleChoices.OWNER,
|
||||
serializers.MailDomainAccessSerializer().create(
|
||||
validated_data={
|
||||
"user": self.request.user,
|
||||
"domain": domain,
|
||||
"role": str(core_models.RoleChoices.OWNER),
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user