profiles: block rework and tests

This commit is contained in:
AdrienLSH
2024-04-07 16:58:29 +02:00
parent 13a078eb82
commit 8912e39fa4
10 changed files with 115 additions and 91 deletions

55
profiles/views/blocks.py Normal file
View File

@ -0,0 +1,55 @@
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.contrib.auth.models import User
from django.utils.translation import gettext as _
from ..models import BlockModel
from ..serializers.BlockSerializer import BlockSerializer
class GetBlocksView(APIView):
permission_classes = (permissions.IsAuthenticated,)
authentication_classes = (SessionAuthentication,)
def get(self, request):
blocked_profiles = BlockModel.objects.filter(blocker=request.user.pk)
response_status: int = status.HTTP_200_OK if blocked_profiles else status.HTTP_204_NO_CONTENT
return Response(BlockSerializer(blocked_profiles, many=True).data, response_status)
class EditBlocksView(APIView):
permission_classes = (permissions.IsAuthenticated,)
authentication_classes = (SessionAuthentication,)
def post(self, request, pk=None):
if (pk == request.user.pk):
return Response(_('You can\'t block yourself.'), status.HTTP_400_BAD_REQUEST)
blocked = User.objects.filter(pk=pk)
if (not blocked.exists()):
return Response(_('This user doesn\'t exist.'), status.HTTP_404_NOT_FOUND)
if (BlockModel.objects.filter(blocker=request.user, blocked=pk)):
return Response(_('You already blocked this user.'), status=status.HTTP_409_CONFLICT)
BlockModel(blocker=request.user, blocked=blocked[0]).save()
return Response(status=status.HTTP_201_CREATED)
def delete(self, request, pk=None):
if (pk == request.user.pk):
return Response(_('You can\'t unblock yourself.'), status.HTTP_400_BAD_REQUEST)
blocked = User.objects.filter(pk=pk)
if (not blocked.exists()):
return Response(_('This user doesn\'t exist.'), status.HTTP_404_NOT_FOUND)
block = BlockModel.objects.filter(blocker=request.user, blocked=blocked[0])
if (not block):
return Response(_('This user isn\'t blocked.'), status.HTTP_400_NOT_FOUND)
block.delete()
return Response(status=status.HTTP_200_OK)

17
profiles/views/friends.py Normal file
View File

@ -0,0 +1,17 @@
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.utils.translation import gettext as _
from ..models import FriendModel
class FriendsView(APIView):
permission_classes = (permissions.IsAuthenticated,)
authentication_classes = (SessionAuthentication,)
def get(self, request):
friends = FriendModel().getFriends(request.user.pk)
if (friends):
return Response({"friends": friends, "user_id": request.user.pk}, status=status.HTTP_200_OK)
return Response({}, status=status.HTTP_204_NO_CONTENT)