32 lines
1.2 KiB
Python
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)
|