dockered
This commit is contained in:
74
django/chat/views/ask.py
Normal file
74
django/chat/views/ask.py
Normal file
@ -0,0 +1,74 @@
|
||||
from rest_framework.views import APIView
|
||||
from rest_framework.response import Response
|
||||
from rest_framework import permissions, status
|
||||
from rest_framework.authentication import SessionAuthentication
|
||||
|
||||
from chat.models import AskModel
|
||||
|
||||
from ..serializers.ask import AskSerializer
|
||||
|
||||
from notice.consumers import notice_manager
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
|
||||
class AskView(APIView):
|
||||
|
||||
serializer_class = AskSerializer
|
||||
permission_classes = (permissions.IsAuthenticated,)
|
||||
authentication_classes = (SessionAuthentication,)
|
||||
|
||||
def post(self, request):
|
||||
data: dict = request.data
|
||||
if (data["asked"] is None):
|
||||
return
|
||||
|
||||
asker_id = request.user.pk
|
||||
asked_id = data["asked"]
|
||||
|
||||
if AskModel().is_asked(asker_id, asked_id):
|
||||
return Response(status=status.HTTP_208_ALREADY_REPORTED)
|
||||
|
||||
AskModel(asker_id=asker_id, asked_id=asked_id).save()
|
||||
return Response(status=status.HTTP_201_CREATED)
|
||||
|
||||
def delete(self, request):
|
||||
data: dict = request.data
|
||||
if (data["asker"] is None):
|
||||
return
|
||||
|
||||
asker_id = data["asker"]
|
||||
asked_id = request.user.pk
|
||||
|
||||
if not AskModel().is_asked(asker_id, asked_id):
|
||||
return Response(status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
asker = User.objects.filter(pk=asked_id)[0]
|
||||
notice_manager.refuse_game(request.user, asker)
|
||||
|
||||
AskModel(asker_id=asker_id, asked_id=asked_id).delete()
|
||||
|
||||
return Response(status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
class AskAcceptView(APIView):
|
||||
|
||||
serializer_class = AskSerializer
|
||||
permission_classes = (permissions.IsAuthenticated,)
|
||||
authentication_classes = (SessionAuthentication,)
|
||||
|
||||
def post(self, request):
|
||||
data: dict = request.data
|
||||
if (data["asker"] is None):
|
||||
return
|
||||
|
||||
asker_id = data["asker"]
|
||||
asked_id = request.user.pk
|
||||
|
||||
if not AskModel().is_asked(asker_id, asked_id):
|
||||
return Response(status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
notice_manager.accept_game(asker=User.objects.filter(pk=asker_id)[0], asked=User.objects.filter(pk=asked_id)[0])
|
||||
|
||||
AskModel(asker_id=asker_id, asked_id=asked_id).delete()
|
||||
return Response(status=status.HTTP_200_OK)
|
31
django/chat/views/chat.py
Normal file
31
django/chat/views/chat.py
Normal file
@ -0,0 +1,31 @@
|
||||
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.chat 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)
|
Reference in New Issue
Block a user