Fix likes showing on site
[wolnelektury.git] / src / social / views.py
index e3d60ca..f2d53d4 100644 (file)
@@ -18,12 +18,13 @@ from wolnelektury.utils import is_ajax
 # ====================
 
 
-@require_POST
+@login_required
 def like_book(request, slug):
-    if not request.user.is_authenticated:
-        return HttpResponseForbidden('Login required.')
     book = get_object_or_404(Book, slug=slug)
 
+    if request.method != 'POST':
+        return redirect(book)
+
     models.UserList.like(request.user, book)
 
     if is_ajax(request):
@@ -49,12 +50,13 @@ class RemoveSetView(AddSetView):
     form_class = forms.RemoveSetForm
 
 
-@require_POST
+@login_required
 def unlike_book(request, slug):
-    if not request.user.is_authenticated:
-        return HttpResponseForbidden('Login required.')
     book = get_object_or_404(Book, slug=slug)
 
+    if request.method != 'POST':
+        return redirect(book)
+
     models.UserList.unlike(request.user, book)
 
     if is_ajax(request):
@@ -66,13 +68,15 @@ def unlike_book(request, slug):
 @login_required
 def my_shelf(request):
     template_name = 'social/my_shelf.html'
-    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, {
-        'tags': ulists,
-        'books': Book.objects_filter(userlistitem__list__user=request.user),
-        'suggest': suggest,
+        'favs': favs,
+        'others': others,
+        #'books': Book.objects.filter(userlistitem__list__user=request.user),
     })
 
 
@@ -80,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