Exemplo n.º 1
0
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', '/'))
Exemplo n.º 2
0
def unshelve(request):
    ''' put a  on a user's shelf '''
    book = models.Edition.objects.get(id=request.POST['book'])
    current_shelf = models.Shelf.objects.get(id=request.POST['shelf'])

    outgoing.handle_unshelve(request.user, book, current_shelf)
    return redirect(request.headers.get('Referer', '/'))
Exemplo n.º 3
0
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('/')
Exemplo n.º 4
0
 def test_handle_unshelve(self):
     self.shelf.books.add(self.book)
     self.shelf.save()
     self.assertEqual(self.shelf.books.count(), 1)
     with patch('bookwyrm.broadcast.broadcast_task.delay') as _:
         outgoing.handle_unshelve(self.user, self.book, self.shelf)
     self.assertEqual(self.shelf.books.count(), 0)
Exemplo n.º 5
0
 def test_handle_unshelve(self):
     self.shelf.books.add(self.book)
     self.shelf.save()
     self.assertEqual(self.shelf.books.count(), 1)
     outgoing.handle_unshelve(self.user, self.book, self.shelf)
     self.assertEqual(self.shelf.books.count(), 0)