From c630ec3572195104331617742c7495364e5b6ee9 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 6 Sep 2021 10:38:37 -0700 Subject: [PATCH] Adds delete list view --- bookwyrm/urls.py | 1 + bookwyrm/views/__init__.py | 1 + bookwyrm/views/list.py | 15 +++++++++++++++ 3 files changed, 17 insertions(+) diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 1dbd67a76..991114fad 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -220,6 +220,7 @@ urlpatterns = [ re_path(r"^list/?$", views.Lists.as_view(), name="lists"), re_path(r"^list/saved/?$", views.SavedLists.as_view(), name="saved-lists"), re_path(r"^list/(?P\d+)(.json)?/?$", views.List.as_view(), name="list"), + re_path(r"^list/delete/(?P\d+)/?$", views.delete_list, name="delete-list"), re_path(r"^list/add-book/?$", views.list.add_book, name="list-add-book"), re_path( r"^list/(?P\d+)/remove/?$", diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index f42049254..ca52800c4 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -27,6 +27,7 @@ from .isbn import Isbn from .landing import About, Home, Landing from .list import Lists, SavedLists, List, Curate, UserLists from .list import save_list, unsave_list +from .list import delete_list from .notifications import Notifications from .outbox import Outbox from .reading import edit_readthrough, create_readthrough diff --git a/bookwyrm/views/list.py b/bookwyrm/views/list.py index e6ef52ba5..af99e9f55 100644 --- a/bookwyrm/views/list.py +++ b/bookwyrm/views/list.py @@ -3,6 +3,7 @@ from typing import Optional from urllib.parse import urlencode from django.contrib.auth.decorators import login_required +from django.core.exceptions import PermissionDenied from django.core.paginator import Paginator from django.db import IntegrityError, transaction from django.db.models import Avg, Count, DecimalField, Q, Max @@ -260,6 +261,20 @@ def unsave_list(request, list_id): return redirect("list", list_id) +@require_POST +@login_required +def delete_list(request, list_id): + """delete a list""" + book_list = get_object_or_404(models.List, id=list_id) + + # only the owner or a moderator can delete a list + if book_list.user != request.user and not request.user.has_perm("moderate_post"): + raise PermissionDenied + + book_list.delete() + return redirect("lists") + + @require_POST @login_required def add_book(request):