can invite to play a game in chat
This commit is contained in:
@ -6,6 +6,6 @@ from .views import ask
|
||||
urlpatterns = [
|
||||
path("", chat.ChannelView.as_view(), name="chats_page"),
|
||||
path("ask/", ask.AskView.as_view(), name="chats_ask"),
|
||||
path("ask/accept/", ask.AskAcceptView.as_view(), name="chats_ask_accept"),
|
||||
path("ask/<int:pk>", ask.AskView.as_view(), name="chats_ask_get"),
|
||||
path("ask/accept", ask.AskAcceptView.as_view(), name="chats_ask_accept"),
|
||||
]
|
||||
|
@ -4,6 +4,7 @@ from rest_framework import permissions, status
|
||||
from rest_framework.authentication import SessionAuthentication
|
||||
|
||||
from chat.models import AskModel
|
||||
from games.models import GameModel
|
||||
|
||||
from notice.consumers import notice_manager
|
||||
|
||||
@ -21,15 +22,15 @@ class AskView(APIView):
|
||||
asker_id = request.user.pk
|
||||
asked_id = data["asked"]
|
||||
|
||||
print("1")
|
||||
|
||||
if (asked_id is None):
|
||||
return Response(status=status.HTTP_400_BAD_REQUEST)
|
||||
print("2")
|
||||
|
||||
if AskModel().is_asked(asker_id, asked_id):
|
||||
return Response(status=status.HTTP_208_ALREADY_REPORTED)
|
||||
print("3")
|
||||
|
||||
asked = User.objects.get(pk=asked_id)
|
||||
|
||||
notice_manager.ask_game(asked, request.user.username)
|
||||
|
||||
AskModel(asker_id=asker_id, asked_id=asked_id).save()
|
||||
return Response(status=status.HTTP_201_CREATED)
|
||||
@ -41,23 +42,17 @@ class AskView(APIView):
|
||||
asked_id = request.user.pk
|
||||
|
||||
if (asker_id is None):
|
||||
asker_id = request.user.id
|
||||
asked_id = data["asked"]
|
||||
if (asked_id is None):
|
||||
return Response(status=status.HTTP_400_BAD_REQUEST)
|
||||
return Response(status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
print(asker_id, " ", asked_id)
|
||||
print(AskModel().is_asked(2, 1))
|
||||
print(AskModel().is_asked(1, 2))
|
||||
if not AskModel().is_asked(asker_id, asked_id):
|
||||
return Response(status=status.HTTP_204_NO_CONTENT)
|
||||
|
||||
# Don't need more verification, just above is enough
|
||||
asker = User.objects.get(pk=asker_id)
|
||||
|
||||
notice_manager.refuse_game(request.user, asker)
|
||||
notice_manager.refuse_game(asker, request.user.username)
|
||||
|
||||
AskModel(asker_id=asker_id, asked_id=asked_id).delete()
|
||||
AskModel.objects.get(asker_id=asker_id, asked_id=asked_id).delete()
|
||||
|
||||
return Response(status=status.HTTP_200_OK)
|
||||
|
||||
@ -70,7 +65,7 @@ class AskView(APIView):
|
||||
if (asked_id is None):
|
||||
return Response(status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
if not AskModel().is_asked(asker_id, asked_id):
|
||||
if not AskModel().is_asked(asked_id, asker_id):
|
||||
return Response(status=status.HTTP_204_NO_CONTENT)
|
||||
return Response(status=status.HTTP_200_OK)
|
||||
|
||||
@ -82,6 +77,7 @@ class AskAcceptView(APIView):
|
||||
authentication_classes = (SessionAuthentication,)
|
||||
|
||||
def post(self, request):
|
||||
|
||||
data: dict = request.data
|
||||
|
||||
asker_id = data["asker"]
|
||||
@ -91,12 +87,14 @@ class AskAcceptView(APIView):
|
||||
return Response(status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
if not AskModel().is_asked(asker_id, asked_id):
|
||||
return Response(status=status.HTTP_404_NOT_FOUND)
|
||||
return Response(status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
asker = User.objects.get(pk=asker_id)
|
||||
asked = User.objects.get(pk=asked_id)
|
||||
asked = request.user
|
||||
|
||||
notice_manager.accept_game(asker=asker, asked=asked)
|
||||
id_game = GameModel().create({asker, asked}).pk
|
||||
|
||||
AskModel(asker_id=asker_id, asked_id=asked_id).delete()
|
||||
return Response(status=status.HTTP_200_OK)
|
||||
notice_manager.accept_game(asker, request.user.username, id_game)
|
||||
|
||||
AskModel.objects.get(asker_id=asker_id, asked_id=asked_id).delete()
|
||||
return Response({"id_game":id_game}, status=status.HTTP_200_OK)
|
||||
|
Reference in New Issue
Block a user