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(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
--- /dev/null
+# Generated by Django 4.0.8 on 2026-03-17 11:18
+
+from django.db import migrations, models
+import django.utils.timezone
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('social', '0026_userprofile'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='userlistitem',
+ name='order',
+ field=models.IntegerField(default=0),
+ ),
+ migrations.AlterField(
+ model_name='userlistitem',
+ name='reported_timestamp',
+ field=models.DateTimeField(default=django.utils.timezone.now),
+ ),
+ ]
class UserListItem(Syncable, models.Model):
list = models.ForeignKey(UserList, models.CASCADE)
uuid = models.UUIDField(unique=True, default=uuid.uuid4, editable=False, blank=True)
- order = models.IntegerField()
+ order = models.IntegerField(default=0)
deleted = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
- reported_timestamp = models.DateTimeField()
+ reported_timestamp = models.DateTimeField(default=now)
book = models.ForeignKey('catalogue.Book', models.SET_NULL, null=True, blank=True)
fragment = models.ForeignKey('catalogue.Fragment', models.SET_NULL, null=True, blank=True)
objects = ActiveManager()
all_objects = models.Manager()
+ def save(self, *args, **kwargs):
+ if not self.order:
+ self.order = self.list.userlistitem_set.all().count() + 1
+ super().save(*args, **kwargs)
+
@classmethod
def create_from_data(cls, user, data):
if data.get('favorites'):