From: Radek Czajka Date: Tue, 17 Feb 2026 15:49:22 +0000 (+0100) Subject: Fix likes showing on site X-Git-Url: https://git.mdrn.pl/wolnelektury.git/commitdiff_plain/362e390a3a0948ed3c2aa54b966a898e90b231a3?ds=inline;hp=11e13d02a963d55ba5e775ce85540441092684e5 Fix likes showing on site --- diff --git a/src/social/models.py b/src/social/models.py index 89fa65cd8..c8d0d1023 100644 --- a/src/social/models.py +++ b/src/social/models.py @@ -433,6 +433,9 @@ class UserListItem(Syncable, models.Model): syncable_fields = ['order', 'deleted', 'book', 'fragment', 'quote', 'bookmark', 'note'] + objects = ActiveManager() + all_objects = models.Manager() + @classmethod def create_from_data(cls, user, data): if data.get('favorites'): diff --git a/src/social/views.py b/src/social/views.py index df944b393..f2d53d4e4 100644 --- a/src/social/views.py +++ b/src/social/views.py @@ -68,9 +68,9 @@ def unlike_book(request, slug): @login_required def my_shelf(request): template_name = 'social/my_shelf.html' - favs = request.user.userlist_set.filter(favorites=True) - others = request.user.userlist_set.filter(favorites=False) - ulists = list(request.user.userlist_set.all()) + favs = request.user.userlist_set.filter(deleted=False, favorites=True) + others = request.user.userlist_set.filter(deleted=False, favorites=False) + ulists = list(request.user.userlist_set.filter(deleted=False)) suggest = [t for t in ulists if t.name] return render(request, template_name, { @@ -84,16 +84,18 @@ def get_sets_for_book_ids(book_ids, user): data = {} tagged = models.UserListItem.objects.filter( list__user=user, - book_id__in=book_ids + book_id__in=book_ids, + deleted=False, + list__deleted=False ).order_by('list__name') for t in tagged: item = data.setdefault(t.book_id, []) - if t.list.name: - item.append({ - "slug": t.list.slug, - "url": t.list.get_absolute_url(), - "name": t.list.name, - }) + item.append({ + "slug": t.list.slug, + "url": t.list.get_absolute_url(), + "name": t.list.name, + "favorites": t.list.favorites, + }) for b in book_ids: if b not in data: data[b] = None diff --git a/src/wolnelektury/static/js/main.js b/src/wolnelektury/static/js/main.js index 9821c7705..666d7a0d7 100644 --- a/src/wolnelektury/static/js/main.js +++ b/src/wolnelektury/static/js/main.js @@ -422,7 +422,7 @@ data: {'csrfmiddlewaretoken': $('[name=csrfmiddlewaretoken]').val()}, dataType: 'json', success: function() { - state.liked[$btn.attr('data-book')] = []; + state.liked[$btn.attr('data-book')] = [{'favorites': true}]; updateLiked($btn); }, error: function() { @@ -502,21 +502,27 @@ function updateLiked(e) { let bookId = $(e).attr('data-book'); - let liked = bookId in state.liked; - $(e).toggleClass('icon-liked', liked); + let liked = false; + let $bookContainer = $('.book-container-' + bookId); - $bookContainer.toggleClass('book-liked', liked); let $sets = $(".sets", $bookContainer); $sets.empty(); $.each(state.liked[bookId], (i,e) => { - let $set = $(""); - $set.attr("data-set", e.slug); - let $setA = $("").appendTo($set); - $setA.attr("href", e.url); - $setA.text(e.name); - let $setX = $("").appendTo($set); - $sets.append($set); + if (e.favorites) { + liked = true; + } else { + let $set = $(""); + $set.attr("data-set", e.slug); + let $setA = $("").appendTo($set); + $setA.attr("href", e.url); + $setA.text(e.name); + let $setX = $("").appendTo($set); + $sets.append($set); + } }); + + $(e).toggleClass('icon-liked', liked); + $bookContainer.toggleClass('book-liked', liked); } })();