diff --git a/bookwyrm/templates/snippets/shelf.html b/bookwyrm/templates/snippets/shelf.html
index 8f825f5f5..f8acf56c1 100644
--- a/bookwyrm/templates/snippets/shelf.html
+++ b/bookwyrm/templates/snippets/shelf.html
@@ -66,6 +66,18 @@
{% include 'snippets/stars.html' with rating=ratings|dict_key:book.id %}
{% endif %}
+
+
+ |
{% endfor %}
diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py
index 5d75f49b2..6b9a29aec 100644
--- a/bookwyrm/urls.py
+++ b/bookwyrm/urls.py
@@ -117,6 +117,7 @@ urlpatterns = [
re_path(r'^delete-status/?$', actions.delete_status),
re_path(r'^shelve/?$', actions.shelve),
+ re_path(r'^unshelve/?$', actions.unshelve),
re_path(r'^follow/?$', actions.follow),
re_path(r'^unfollow/?$', actions.unfollow),
diff --git a/bookwyrm/view_actions.py b/bookwyrm/view_actions.py
index e8c3e6f2a..c3c937842 100644
--- a/bookwyrm/view_actions.py
+++ b/bookwyrm/view_actions.py
@@ -285,6 +285,16 @@ def shelve(request):
return redirect('/')
+@login_required
+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', '/'))
+
+
@login_required
def rate(request):
''' just a star rating for a book '''
@@ -322,7 +332,6 @@ def reply(request):
def handle_status(request, form):
''' all the "create a status" functions are the same '''
- book_id = request.POST.get('book')
if not form.is_valid():
return redirect(request.headers.get('Referer', '/'))