my_book_list_api/books/views.py
2025-12-06 21:54:47 +01:00

58 lines
2.1 KiB
Python

from rest_framework.decorators import api_view
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticatedOrReadOnly, IsAuthenticated
from rest_framework import status
from .models import Book, CustomUser
from .serializers import BookSerializer
class BookListCreateView(APIView):
permission_classes = [IsAuthenticatedOrReadOnly]
def get(self, request):
books = Book.objects.all()
serializer = BookSerializer(books, many=True)
return Response(serializer.data)
def post(self, request):
serializer = BookSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@api_view(['GET'])
def find_user_by_id(request, user_id):
try:
user = CustomUser.objects.get(id=user_id)
books_queryset = Book.objects.filter(user=user)
books_serializer = BookSerializer(books_queryset, many=True)
return Response({
'username': user.username,
'firstName': user.first_name,
'lastName': user.last_name,
'email': user.email,
'profilePicture': user.avatar.url if user.avatar else '',
'books': books_serializer.data,
})
except CustomUser.DoesNotExist:
return Response({"message": "Cet utilisateur n'existe pas"}, status=status.HTTP_404_NOT_FOUND)
class UserProfileView(APIView):
permission_classes = [IsAuthenticated]
def get(self,request):
user = request.user
books_queryset = Book.objects.filter(user=user)
books_serializer = BookSerializer(books_queryset, many=True)
return Response({
'username': user.username,
'firstName': user.first_name,
'lastName': user.last_name,
'email': user.email,
'profilePicture': user.avatar.url if user.avatar else '',
'books': books_serializer.data,
})