Edit views

This commit is contained in:
Francesco Esposito 2019-11-23 12:22:05 +01:00
parent f929755e5f
commit ad79a6ce16
1 changed files with 25 additions and 63 deletions

View File

@ -1,80 +1,42 @@
import django_filters.rest_framework
from django.shortcuts import render
from django.contrib.auth.models import User
from rest_framework import viewsets, filters, generics, permissions
from rest_framework.response import Response
from rest_framework import filters, generics, permissions
from rest_framework.views import APIView
from rest_framework import status
from django.http import Http404
from django_filters.rest_framework import DjangoFilterBackend
from .serializers import BookSerializer, BookmarkSerilizer, UserSerializer
from .models import Book, Bookmark
from .serializers import BookSerializer, UserSerializer
from .models import Book
from .permissions import isOwner
# Create your views here.
class UserList(APIView):
queryset = User.objects.all()
class UserList(generics.ListAPIView):
#queryset = User.objects.all()
serializer_class = UserSerializer
pagination_class = None
def get_queryset(self):
return User.objects.filter(username=self.request.user)
class UserDetail(generics.RetrieveAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
class BookList(APIView):
class BookList(generics.ListCreateAPIView):
serializer_class = BookSerializer
#queryset = Book.objects.all()
#filter_backends = [filters.SearchFilter, filters.OrderingFilter]
#search_fields = ['title', 'author']
#ordering_fields = ['pub_date', 'title', 'author']
#ordering = ['title']
permission_classes = [permissions.IsAuthenticated, isOwner]
filter_backends = [filters.SearchFilter, filters.OrderingFilter]
search_fields = ['title', 'author']
ordering_fields = ['title', 'author']
ordering = ['title']
def get(self, request, format=None):
books = Book.objects.filter(owner=request.user)
serializer = BookSerializer(books, many=True)
return Response(serializer.data)
def post(self, request, format=None):
serializer = BookSerializer(data=request.data)
if serializer.is_valid():
serializer.save(owner=request.user)
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def get_queryset(self):
return Book.objects.filter(owner=self.request.user)
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
class BookDetail(APIView):
#serializer_class = BookSerializer
#queryset = Book.objects.all()
#filter_backends = [filters.SearchFilter, filters.OrderingFilter]
#search_fields = ['title', 'author']
#ordering_fields = ['pub_date', 'title', 'author']
#ordering = ['title']
class BookDetail(generics.RetrieveUpdateDestroyAPIView):
serializer_class = BookSerializer
permission_classes = [permissions.IsAuthenticated, isOwner]
def get_object(self, pk, owner=None):
try:
return Book.objects.get(pk=pk, owner=owner)
except Book.DoesNotExist:
raise Http404
def get(self, request, pk, format=None):
book = self.get_object(pk, request.user)
serializer = BookSerializer(book)
return Response(serializer.data)
def put(self, request, pk, format=None):
book = self.get_object(pk, request.user)
serializer = BookSerializer(book, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def delete(self, request, pk, format=None):
book = self.get_object(pk, request.user)
book.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
def get_queryset(self):
pk = self.kwargs['pk']
return Book.objects.filter(pk=pk, owner=self.request.user)