-# -*- coding: utf-8 -*-
# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
#
from ajaxable.utils import AjaxableFormView
from catalogue.models import Book
-from ssify import ssi_included
from social import forms
-from .models import Cite
-from social.utils import get_set, likes, set_sets
+from wolnelektury.utils import is_ajax
# ====================
@require_POST
def like_book(request, slug):
- if not request.user.is_authenticated():
+ if not request.user.is_authenticated:
return HttpResponseForbidden('Login required.')
book = get_object_or_404(Book, slug=slug)
- if not likes(request.user, book):
- tag = get_set(request.user, '')
- set_sets(request.user, book, [tag])
- if request.is_ajax():
+ book.like(request.user)
+
+ if is_ajax(request):
return JsonResponse({"success": True, "msg": "ok", "like": True})
else:
return redirect(book)
+@require_POST
+def unlike_book(request, slug):
+ if not request.user.is_authenticated:
+ return HttpResponseForbidden('Login required.')
+ book = get_object_or_404(Book, slug=slug)
+
+ book.unlike(request.user)
+
+ if is_ajax(request):
+ return JsonResponse({"success": True, "msg": "ok", "like": False})
+ else:
+ return redirect(book)
+
+
@login_required
def my_shelf(request):
- books = Book.tagged.with_any(request.user.tag_set.all())
- return render(request, 'social/my_shelf.html', locals())
+ return render(request, 'social/my_shelf.html', {
+ 'books': Book.tagged.with_any(request.user.tag_set.all())
+ })
class ObjectSetsFormView(AjaxableFormView):
def form_args(self, request, obj):
return (obj, request.user), {}
-
-
-@require_POST
-def unlike_book(request, slug):
- if not request.user.is_authenticated():
- return HttpResponseForbidden('Login required.')
- book = get_object_or_404(Book, slug=slug)
- if likes(request.user, book):
- set_sets(request.user, book, [])
-
- if request.is_ajax():
- return JsonResponse({"success": True, "msg": "ok", "like": False})
- else:
- return redirect(book)
-
-
-@ssi_included
-def cite(request, pk, main=False):
- cite = get_object_or_404(Cite, pk=pk)
- return render(request, 'social/cite_promo.html', {
- 'main': main,
- 'cite': cite,
- })
-
-
-@ssi_included(use_lang=False)
-def cite_info(request, pk):
- cite = get_object_or_404(Cite, pk=pk)
- return render(request, 'social/cite_info.html', {
- 'cite': cite,
- })