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)