From 78336531c93a8496c7f9e6b226f30e8591956694 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 21 Feb 2020 16:26:52 -0800 Subject: [PATCH] Shelve books from anywhere you see a book --- fedireads/templates/book.html | 2 +- fedireads/templates/feed.html | 4 ---- fedireads/templates/snippets/book.html | 2 ++ .../templates/snippets/shelve-button.html | 24 +++++++++++++++++-- fedireads/templatetags/fr_display.py | 4 ++-- fedireads/urls.py | 5 +--- fedireads/views.py | 12 ++++------ 7 files changed, 32 insertions(+), 21 deletions(-) diff --git a/fedireads/templates/book.html b/fedireads/templates/book.html index 32508ca1..110a7f84 100644 --- a/fedireads/templates/book.html +++ b/fedireads/templates/book.html @@ -4,7 +4,7 @@
- {% include 'snippets/book.html' with book=book size=large rating=rating description=True %} + {% include 'snippets/book.html' with book=book size=large rating=rating description=True shelf_pulldown=True %}
{% for tag in tags %} diff --git a/fedireads/templates/feed.html b/fedireads/templates/feed.html index 475b966e..f0edc821 100644 --- a/fedireads/templates/feed.html +++ b/fedireads/templates/feed.html @@ -10,7 +10,6 @@ {% for book in shelf.books %}
{% include 'snippets/book.html' with book=book size="small" %} - {% include 'snippets/shelve-button.html' with book=book %}
{% endfor %} {% if shelf.size > shelf.books.count %} @@ -29,9 +28,6 @@ {% for book in recent_books %}
{% include 'snippets/book.html' with book=book size="small" %} - {% if not book in user_books.all %} - {% include 'snippets/shelve-button.html' with book=book %} - {% endif %}
{% endfor %}
diff --git a/fedireads/templates/snippets/book.html b/fedireads/templates/snippets/book.html index 8bdcd7af..f2a456eb 100644 --- a/fedireads/templates/snippets/book.html +++ b/fedireads/templates/snippets/book.html @@ -12,3 +12,5 @@ {% if description %}
{{ book.data.description | description }}
{% endif %} + +{% include 'snippets/shelve-button.html' with book=book pulldown=shelf_pulldown%} diff --git a/fedireads/templates/snippets/shelve-button.html b/fedireads/templates/snippets/shelve-button.html index 2ef7ea54..4708bba9 100644 --- a/fedireads/templates/snippets/shelve-button.html +++ b/fedireads/templates/snippets/shelve-button.html @@ -1,7 +1,27 @@ {% load fr_display %} -
+{% if not pulldown %} + + {% csrf_token %} - + +
+{% else %} + +
+ {% csrf_token %} + + + + +
+ +{% endif %} diff --git a/fedireads/templatetags/fr_display.py b/fedireads/templatetags/fr_display.py index 8ed4c017..d8d3a0a3 100644 --- a/fedireads/templatetags/fr_display.py +++ b/fedireads/templatetags/fr_display.py @@ -74,8 +74,8 @@ def shelve_button_text(context, book): except models.ShelfBook.DoesNotExist: return 'Want to read' identifier = shelf.shelf.identifier - if identifier == 'Start reading': - return 'reading' + if identifier == 'to-read': + return 'Start reading' elif identifier == 'reading': return 'I\'m done!' return 'Want to read' diff --git a/fedireads/urls.py b/fedireads/urls.py index 47212f49..d01b62a4 100644 --- a/fedireads/urls.py +++ b/fedireads/urls.py @@ -56,10 +56,7 @@ urlpatterns = [ re_path(r'^untag/?$', views.untag), re_path(r'^comment/?$', views.comment), re_path(r'^favorite/(?P\d+)/?$', views.favorite), - re_path( - r'^shelve/(?P\w+)/(?P[\w-]+)/(?P\d+)/?$', - views.shelve - ), + re_path(r'^shelve/?$', views.shelve), re_path(r'^follow/(?P[\w@\.-]+)/?$', views.follow), re_path(r'^unfollow/(?P[\w@\.-]+)/?$', views.unfollow), re_path(r'^search/?$', views.search), diff --git a/fedireads/views.py b/fedireads/views.py index 0f495a1d..76b9a1fe 100644 --- a/fedireads/views.py +++ b/fedireads/views.py @@ -274,19 +274,15 @@ def shelf_page(request, username, shelf_identifier): @login_required -def shelve(request, username, shelf_id, book_id, reshelve=True): +def shelve(request): ''' put a book on a user's shelf ''' - if request.user.localname != username: - # don't let people put books on other people's shelves - return HttpResponseNotFound() - - book = models.Book.objects.get(id=book_id) + book = models.Book.objects.get(id=request.POST['book']) desired_shelf = models.Shelf.objects.filter( - identifier=shelf_id, + identifier=request.POST['shelf'], user=request.user ).first() - if reshelve: + if request.POST.get('reshelve', True): try: current_shelf = models.Shelf.objects.get( user=request.user,