QA: refresh sponsor page cache when sponsor changed
[wolnelektury.git] / src / social / api / views.py
index 9d8fd4a..f89de27 100644 (file)
@@ -126,7 +126,10 @@ class UserListSerializer(serializers.ModelSerializer):
             'deleted',
             'books',
         ]
-        read_only_fields = ['favorites']
+        read_only_fields = [
+            'favorites',
+            'slug',
+        ]
         extra_kwargs = {
             'slug': {
                 'required': False
@@ -139,17 +142,21 @@ class UserListSerializer(serializers.ModelSerializer):
             validated_data['name'],
             create=True
         )
-        instance.userlistitem_set.all().delete()
-        for book in validated_data['books']:
-            instance.append(book)
+        if 'books' in validated_data:
+            instance.userlistitem_set.all().delete()
+            for book in validated_data['books']:
+                instance.append(book)
         return instance
 
     def update(self, instance, validated_data):
-        instance.userlistitem_set.all().delete()
-        for book in validated_data['books']:
-            instance.append(instance)
+        super().update(instance, validated_data)
+        if 'books' in validated_data:
+            instance.userlistitem_set.all().delete()
+            for book in validated_data['books']:
+                instance.append(instance)
         return instance
 
+
 class UserListBooksSerializer(UserListSerializer):
     class Meta:
         model = models.UserList
@@ -232,7 +239,7 @@ class ListView(RetrieveUpdateDestroyAPIView):
             )
         else:
             return get_object_or_404(
-                models.UserList,
+                models.UserList.all_objects.all(),
                 slug=self.kwargs['slug'],
                 user=self.request.user)
 
@@ -471,7 +478,7 @@ class UserListItemSyncView(SyncView):
     sync_user_field = 'list__user'
 
     def get_queryset_for_ts(self, timestamp):
-        qs = self.model.objects.filter(
+        qs = self.model.all_objects.filter(
             updated_at__gt=timestamp,
             **{
                 self.sync_user_field: self.request.user