fnp
/
wolnelektury.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' into appdev
[wolnelektury.git]
/
src
/
social
/
views.py
diff --git
a/src/social/views.py
b/src/social/views.py
index
d3f9381
..
0ff0771
100644
(file)
--- a/
src/social/views.py
+++ b/
src/social/views.py
@@
-1,5
+1,5
@@
-# This file is part of Wolne
l
ektury, licensed under GNU Affero GPLv3 or later.
-# Copyright © Fundacja
Nowoczesna Polska
. See NOTICE for more information.
+# This file is part of Wolne
L
ektury, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja
Wolne Lektury
. See NOTICE for more information.
#
from django.shortcuts import render, get_object_or_404, redirect
from django.http import HttpResponseForbidden, JsonResponse
#
from django.shortcuts import render, get_object_or_404, redirect
from django.http import HttpResponseForbidden, JsonResponse
@@
-8,9
+8,8
@@
from django.views.decorators.cache import never_cache
from django.views.decorators.http import require_POST
from django.views.generic.edit import FormView
from django.views.decorators.http import require_POST
from django.views.generic.edit import FormView
-from catalogue.models import Book, Tag
-import catalogue.models.tag
-from social import forms
+from catalogue.models import Book
+from social import forms, models
from wolnelektury.utils import is_ajax
from wolnelektury.utils import is_ajax
@@
-19,13
+18,14
@@
from wolnelektury.utils import is_ajax
# ====================
# ====================
-@
require_POST
+@
login_required
def like_book(request, slug):
def like_book(request, slug):
- if not request.user.is_authenticated:
- return HttpResponseForbidden('Login required.')
book = get_object_or_404(Book, slug=slug)
book = get_object_or_404(Book, slug=slug)
- book.like(request.user)
+ if request.method != 'POST':
+ return redirect(book)
+
+ models.UserList.like(request.user, book)
if is_ajax(request):
return JsonResponse({"success": True, "msg": "ok", "like": True})
if is_ajax(request):
return JsonResponse({"success": True, "msg": "ok", "like": True})
@@
-50,13
+50,14
@@
class RemoveSetView(AddSetView):
form_class = forms.RemoveSetForm
form_class = forms.RemoveSetForm
-@
require_POST
+@
login_required
def unlike_book(request, slug):
def unlike_book(request, slug):
- if not request.user.is_authenticated:
- return HttpResponseForbidden('Login required.')
book = get_object_or_404(Book, slug=slug)
book = get_object_or_404(Book, slug=slug)
- book.unlike(request.user)
+ if request.method != 'POST':
+ return redirect(book)
+
+ models.UserList.unlike(request.user, book)
if is_ajax(request):
return JsonResponse({"success": True, "msg": "ok", "like": False})
if is_ajax(request):
return JsonResponse({"success": True, "msg": "ok", "like": False})
@@
-67,32
+68,29
@@
def unlike_book(request, slug):
@login_required
def my_shelf(request):
template_name = 'social/my_shelf.html'
@login_required
def my_shelf(request):
template_name = 'social/my_shelf.html'
- tags = list(request.user.tag_set.all())
- suggest = [t for t in tags if t.name]
- print(suggest)
+ ulists = list(request.user.userlist_set.all())
+ suggest = [t for t in ulists if t.name]
return render(request, template_name, {
return render(request, template_name, {
- 'tags':
tag
s,
- 'books': Book.
tagged.with_any(tags
),
+ 'tags':
ulist
s,
+ 'books': Book.
objects_filter(userlistitem__list__user=request.user
),
'suggest': suggest,
})
def get_sets_for_book_ids(book_ids, user):
data = {}
'suggest': suggest,
})
def get_sets_for_book_ids(book_ids, user):
data = {}
- tagged = catalogue.models.tag.TagRelation.objects.filter(
- tag__user=user,
- #content_type= # for books,
- object_id__in=book_ids
- ).order_by('tag__sort_key')
+ tagged = models.UserListItem.objects.filter(
+ list__user=user,
+ book_id__in=book_ids
+ ).order_by('list__name')
for t in tagged:
for t in tagged:
- # related?
- item = data.setdefault(t.object_id, [])
- if t.tag.name:
+ item = data.setdefault(t.book_id, [])
+ if t.list.name:
item.append({
item.append({
- "slug": t.
tag
.slug,
- "url": t.
tag
.get_absolute_url(),
- "name": t.
tag
.name,
+ "slug": t.
list
.slug,
+ "url": t.
list
.get_absolute_url(),
+ "name": t.
list
.name,
})
for b in book_ids:
if b not in data:
})
for b in book_ids:
if b not in data:
@@
-117,11
+115,20
@@
def my_liked(request):
@login_required
def my_tags(request):
term = request.GET.get('term', '')
@login_required
def my_tags(request):
term = request.GET.get('term', '')
- tags =
Tag.objects.filter(user=request.user).order_by('sort_key
')
+ tags =
models.UserList.objects.filter(user=request.user).order_by('name
')
if term:
if term:
-
tag
s = tags.filter(name__icontains=term)
+
ulist
s = tags.filter(name__icontains=term)
return JsonResponse(
[
return JsonResponse(
[
-
t.name for t in tag
s
+
ul.name for ul in ulist
s
], safe=False
)
], safe=False
)
+
+
+def confirm_user(request, key):
+ uc = get_object_or_404(models.UserConfirmation, key=key)
+ user = uc.user
+ uc.use()
+ return render(request, 'social/user_confirmation.html', {
+ 'user': user,
+ })