(api) allow to list and create Mailboxes

Simply display all Mailboxes create for a MailDomain.
LDAP connection is not yet available, it will be implemented soon.
Read and create permissions will be refined soon too.
This commit is contained in:
Sabrina Demagny
2024-04-16 17:06:43 +02:00
committed by Marie
parent 1704ba1707
commit 082fb99bd5
6 changed files with 242 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
"""API endpoints"""
from rest_framework import mixins, viewsets
from rest_framework import permissions as drf_permissions
from mailbox_manager import models
from . import serializers
class MailDomainViewSet(
mixins.ListModelMixin,
viewsets.GenericViewSet,
):
"""MailDomain ViewSet"""
permission_classes = [drf_permissions.IsAuthenticated]
serializer_class = serializers.MailDomainSerializer
queryset = models.MailDomain.objects.all()
class MailBoxViewSet(
mixins.CreateModelMixin,
mixins.ListModelMixin,
viewsets.GenericViewSet,
):
"""MailBox ViewSet"""
permission_classes = [drf_permissions.IsAuthenticated]
serializer_class = serializers.MailboxSerializer
queryset = models.Mailbox.objects.all()
def get_queryset(self):
"""Custom queryset to get mailboxes related to a mail domain."""
domain_id = self.kwargs.get("domain_id", "")
if domain_id:
return self.queryset.filter(domain__id=domain_id)
return self.queryset
def perform_create(self, serializer):
"""Create new mailbox."""
domain_id = self.kwargs.get("domain_id", "")
if domain_id:
serializer.validated_data["domain"] = models.MailDomain.objects.get(
id=domain_id
)
super().perform_create(serializer)