42_ft_transcendence/chat/views/chat.py
2024-05-14 08:16:21 +02:00

32 lines
1.2 KiB
Python

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import permissions
from rest_framework.authentication import SessionAuthentication
from django.contrib.auth.models import User
from ..models import ChatChannelModel, ChatMemberModel
from ..serializers import ChatChannelSerializer
class ChannelView(APIView):
serializer_class = ChatChannelSerializer
permission_classes = (permissions.IsAuthenticated,)
authentication_classes = (SessionAuthentication,)
def post(self, request):
serializer = self.serializer_class(data=request.data, context={'user': request.user})
serializer.is_valid(raise_exception=True)
members_id = serializer.validated_data.get('members_id')
member_list = [User.objects.get(pk=member_id) for member_id in members_id]
for member_channel in ChatMemberModel.objects.filter(member=member_list[0]):
channel: ChatChannelModel = member_channel.channel
if set(channel.get_members()) == set(member_list):
break
else:
channel = ChatChannelModel().create(member_list)
return Response(self.serializer_class(channel).data)