X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/32e632734c0a8390775bb8661edc78c2045cf5f3..3200b733982abd6033a6b638d9c40ceda4948333:/src/social/models.py diff --git a/src/social/models.py b/src/social/models.py index c41a78f67..862db4cdd 100644 --- a/src/social/models.py +++ b/src/social/models.py @@ -365,14 +365,23 @@ class UserList(Syncable, models.Model): return ls.userlistitem_set.filter(deleted=False, book=book).exists() def append(self, book): - # TODO: check for duplicates? n = now() - item = self.userlistitem_set.create( + items = self.userlistitem_set.filter( book=book, - order=(self.userlistitem_set.aggregate(m=models.Max('order'))['m'] or 0) + 1, - updated_at=n, - reported_timestamp=n, ) + if items.exists(): + items.update( + deleted=False, + reported_timestamp=n, + ) + item = items.first() + else: + item = self.userlistitem_set.create( + book=book, + order=(self.userlistitem_set.aggregate(m=models.Max('order'))['m'] or 0) + 1, + updated_at=n, + reported_timestamp=n, + ) book.update_popularity() return item