X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/200882c4c84192160b63b054b94220989c86aec2..162b0b772d94f0f6b12a63ea2778c1cc0c104027:/src/social/api/views.py diff --git a/src/social/api/views.py b/src/social/api/views.py index 2ac1c930f..6cae38ae4 100644 --- a/src/social/api/views.py +++ b/src/social/api/views.py @@ -187,17 +187,34 @@ class ListItemViewV2(APIView): @never_cache class ListItemListViewV3(ListCreateAPIView): permission_classes = [IsAuthenticatedOrReadOnly] - serializer_class = serializers.UserListItemSerializer def get_queryset(self): lst = get_userlist(self.kwargs['slug'], self.request) - return lst.userlistitem_set.all() + return lst.userlistitem_set.all().order_by('order') + + def get_serializer_class(self): + if self.request.method == 'GET': + return serializers.UserListItemReadSerializer + else: + return serializers.UserListItemSerializer + + def get_serializer(self, *args, **kwargs): + serializer_class = self.get_serializer_class() + kwargs.setdefault('context', self.get_serializer_context()) + + if isinstance(self.request.data, list): + kwargs['many'] = True + + return serializer_class(*args, **kwargs) + + def perform_create(self, serializer): + lst = get_userlist(self.kwargs['slug'], self.request) + serializer.save(list=lst) @never_cache class ListItemViewV3(RetrieveUpdateDestroyAPIView): permission_classes = [IsAuthenticated] - serializer_class = serializers.UserListItemSerializer lookup_field = 'uuid' def get_queryset(self): @@ -205,6 +222,12 @@ class ListItemViewV3(RetrieveUpdateDestroyAPIView): list__user=self.request.user ) + def get_serializer_class(self): + if self.request.method == 'GET': + return serializers.UserListItemReadSerializer + else: + return serializers.UserListItemSerializer + @vary_on_auth class ShelfView(ListAPIView):