Django 4.
[wolnelektury.git] / src / social / views.py
index 49c9b70..8966159 100644 (file)
@@ -1,4 +1,3 @@
-# -*- 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.
 #
@@ -10,10 +9,8 @@ from django.views.decorators.http import require_POST
 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
 
 
 # ====================
@@ -23,23 +20,37 @@ from social.utils import get_set, likes, set_sets
 
 @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):
@@ -57,34 +68,3 @@ 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,
-    })