@ -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 '''
|
||||
|
Reference in New Issue
Block a user