From ff53fd490b02536733f6618908760b9e3d52eeb3 Mon Sep 17 00:00:00 2001 From: jdlugosz963 Date: Mon, 29 Nov 2021 10:50:24 +0100 Subject: add group messages api --- chat_api/views.py | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) (limited to 'chat_api/views.py') diff --git a/chat_api/views.py b/chat_api/views.py index eca6d45..6d161c1 100644 --- a/chat_api/views.py +++ b/chat_api/views.py @@ -1,7 +1,6 @@ from django.db.models.query import QuerySet from django.http.response import Http404 from rest_framework.response import Response -from rest_framework.serializers import Serializer from rest_framework.views import APIView from rest_framework import permissions from rest_framework import generics @@ -77,3 +76,40 @@ class GroupDetailView(generics.RetrieveUpdateDestroyAPIView): serializer = GroupSerializer(group, context={"request": self.request}) return Response(serializer.data) + +class GmsView(APIView): + permission_classes = (permissions.IsAuthenticated, ) + authentication_classes = (TokenAuthentication, ) + + def get(self, request, pk): + try: + group = Group.objects.filter( + Q(owner=request.user) | + Q(users__in=(request.user.pk, )) + ).distinct().get(Q(pk=pk)) + except Group.DoesNotExist: + raise Http404 + + serialzier = GroupMessagesSerializer( + group, + context={"request": request} + ) + + return Response(serialzier.data) + + def post(self, request, pk): + try: # check is user in group TODO: Make it better + Group.objects.filter( + Q(owner=request.user) | + Q(users__in=(request.user.pk, )) + ).distinct().get(Q(pk=pk)) + except Group.DoesNotExist: + raise Http404 + + request.data['sender'] = request.user.pk + request.data['reciever'] = pk + serializer = GmSerializer(data=request.data) + serializer.is_valid(raise_exception=True) + serializer.save() + + return Response(serializer.data) \ No newline at end of file -- cgit v1.2.3