def get_serializer_class(self):
if self.request.method == 'GET':
- return serializers.UserListItemReadSerializer
+ if self.request.version < 'v4':
+ return serializers.UserListItemReadSerializerV3
+ else:
+ return serializers.UserListItemReadSerializer
else:
return serializers.UserListItemSerializer
serializer.save(list=lst)
+@never_cache
+class ListItemsForBook(ListAPIView):
+ permission_classes = [IsAuthenticated]
+
+ def get_serializer_class(self):
+ if self.request.version < 'v4':
+ return serializers.UserListItemReadSerializerV3
+ else:
+ return serializers.UserListItemReadSerializer
+
+ def get_queryset(self):
+ book = get_object_or_404(catalogue.models.Book, slug=self.kwargs['book'])
+ return models.UserListItem.objects.filter(
+ list__user=self.request.user,
+ book=book,
+ )
+
+
+class ListItemsView(APIView):
+ permission_classes = [IsAuthenticated]
+
+ def delete(self, request):
+ if not isinstance(self.request.data, list):
+ return Response({"error": "no data"}, status=400)
+ models.UserListItem.objects.filter(
+ list__user=self.request.user,
+ uuid__in=self.request.data
+ ).delete()
+ return Response({})
+
+
@never_cache
class ListItemViewV3(RetrieveUpdateDestroyAPIView):
permission_classes = [IsAuthenticated]
def get_serializer_class(self):
if self.request.method == 'GET':
- return serializers.UserListItemReadSerializer
+ if self.request.version < 'v4':
+ return serializers.UserListItemReadSerializerV3
+ else:
+ return serializers.UserListItemReadSerializer
else:
return serializers.UserListItemSerializer