79 lines
2.2 KiB
Python
79 lines
2.2 KiB
Python
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 django.http import HttpRequest
|
|
from django.contrib.auth import login
|
|
from django.db.models import QuerySet
|
|
from django.core import serializers
|
|
|
|
from chat.models import AskModel
|
|
from profiles.models import ProfileModel
|
|
|
|
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"] == 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"] == 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 AskAccepteView(APIView):
|
|
|
|
serializer_class = AskSerializer
|
|
permission_classes = (permissions.IsAuthenticated,)
|
|
authentication_classes = (SessionAuthentication,)
|
|
|
|
def post(self, request):
|
|
data : dict = request.data
|
|
if (data["asker"] == 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)
|