Works on #55
This commit is contained in:
Mouse Reeve
2020-02-20 22:19:19 -08:00
parent 13b512b569
commit 870d0b9697
15 changed files with 205 additions and 37 deletions

View File

@ -202,12 +202,25 @@ def book_page(request, book_identifier):
# TODO: again, post privacy?
reviews = models.Review.objects.filter(book=book)
rating = reviews.aggregate(Avg('rating'))
tags = models.Tag.objects.filter(
book=book
).values(
'book', 'name'
).distinct().all()
user_tags = models.Tag.objects.filter(
book=book, user=request.user
).values_list('name', flat=True)
review_form = forms.ReviewForm()
tag_form = forms.TagForm()
data = {
'book': book,
'reviews': reviews,
'rating': rating['rating__avg'],
'tags': tags,
'user_tags': user_tags,
'review_form': review_form,
'tag_form': tag_form,
}
return TemplateResponse(request, 'book.html', data)
@ -276,16 +289,25 @@ def review(request):
@login_required
def tag(request):
''' tag a book '''
form = forms.ReviewForm(request.POST)
# I'm not using a form here because sometimes "name" is sent as a hidden
# field which doesn't validate
name = request.POST.get('name')
book_identifier = request.POST.get('book')
if not form.is_valid():
return redirect('/book/%s' % book_identifier)
name = form.data.get('name')
outgoing.handle_tag(request.user, book_identifier, name)
return redirect('/book/%s' % book_identifier)
@login_required
def untag(request):
''' untag a book '''
name = request.POST.get('name')
book_identifier = request.POST.get('book')
outgoing.handle_untag(request.user, book_identifier, name)
return redirect('/book/%s' % book_identifier)
@login_required
def comment(request):
''' respond to a book review '''