# ====================
-@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):
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):
@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),
})
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