53 lines
1.8 KiB
Python
53 lines
1.8 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,
|
|
'email': user.email,
|
|
'books': books_serializer.data,
|
|
})
|
|
except CustomUser.DoesNotExist:
|
|
return Response({"message": "Cet utilisateur n'existe pas"}, status=404)
|
|
|
|
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,
|
|
'email': user.email,
|
|
'books': books_serializer.data,
|
|
}) |