segnalibre-backend/segnalibre_app/views.py

53 lines
1.7 KiB
Python
Raw Normal View History

2019-11-23 12:22:05 +01:00
2019-11-23 01:36:02 +01:00
from django.shortcuts import render
from django.contrib.auth.models import User
2019-11-23 12:22:05 +01:00
from rest_framework import filters, generics, permissions
2019-11-23 01:36:02 +01:00
from rest_framework.views import APIView
2019-11-23 12:22:05 +01:00
from .serializers import BookSerializer, UserSerializer
from .models import Book
2019-11-23 01:36:02 +01:00
from .permissions import isOwner
# Create your views here.
2019-11-23 12:22:05 +01:00
class UserList(generics.ListAPIView):
#queryset = User.objects.all()
2019-11-23 01:36:02 +01:00
serializer_class = UserSerializer
2019-11-23 12:22:05 +01:00
pagination_class = None
2019-11-23 01:36:02 +01:00
2019-11-23 12:22:05 +01:00
def get_queryset(self):
return User.objects.filter(username=self.request.user)
2019-11-23 01:36:02 +01:00
2019-11-23 12:22:05 +01:00
class BookList(generics.ListCreateAPIView):
2019-11-23 01:36:02 +01:00
serializer_class = BookSerializer
#queryset = Book.objects.all()
permission_classes = [permissions.IsAuthenticated, isOwner]
2019-11-23 12:22:05 +01:00
filter_backends = [filters.SearchFilter, filters.OrderingFilter]
search_fields = ['title', 'author']
ordering_fields = ['title', 'author']
ordering = ['title']
2019-11-23 01:36:02 +01:00
2019-11-23 12:22:05 +01:00
def get_queryset(self):
2019-11-29 00:15:59 +01:00
queryset = Book.objects.filter(owner=self.request.user)
show = self.request.query_params.get('show', None)
if show == 'all':
queryset = queryset.filter(status='completed') | queryset.filter(status='uncompleted')
elif show == 'completed':
queryset = queryset.filter(status='completed')
else:
queryset = queryset.filter(status='uncompleted')
return queryset
2019-11-23 12:22:05 +01:00
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
2019-11-23 01:36:02 +01:00
2019-11-23 12:22:05 +01:00
class BookDetail(generics.RetrieveUpdateDestroyAPIView):
serializer_class = BookSerializer
2019-11-23 01:36:02 +01:00
permission_classes = [permissions.IsAuthenticated, isOwner]
2019-11-23 12:22:05 +01:00
def get_queryset(self):
pk = self.kwargs['pk']
return Book.objects.filter(pk=pk, owner=self.request.user)