def finish_reading(request): ''' a user completed a book, yay ''' book = books_manager.get_edition(request.POST['book']) shelf = models.Shelf.objects.filter(identifier='read', user=request.user).first() # update or create a readthrough readthrough = update_readthrough(request, book=book) if readthrough.start_date or readthrough.finish_date: readthrough.save() # shelve the book if request.POST.get('reshelve', True): try: current_shelf = models.Shelf.objects.get(user=request.user, edition=book) outgoing.handle_unshelve(request.user, book, current_shelf) except models.Shelf.DoesNotExist: # this just means it isn't currently on the user's shelves pass outgoing.handle_shelve(request.user, book, shelf) # post about it (if you want) if request.POST.get('post-status'): privacy = request.POST.get('privacy') outgoing.handle_reading_status(request.user, shelf, book, privacy) return redirect(request.headers.get('Referer', '/'))
def shelve(request): ''' put a on a user's shelf ''' book = books_manager.get_edition(request.POST['book']) desired_shelf = models.Shelf.objects.filter( identifier=request.POST['shelf'], user=request.user).first() if request.POST.get('reshelve', True): try: current_shelf = models.Shelf.objects.get(user=request.user, edition=book) outgoing.handle_unshelve(request.user, book, current_shelf) except models.Shelf.DoesNotExist: # this just means it isn't currently on the user's shelves pass outgoing.handle_shelve(request.user, book, desired_shelf) # post about "want to read" shelves if desired_shelf.identifier == 'to-read': outgoing.handle_reading_status(request.user, desired_shelf, book, privacy='public') return redirect('/')