Merge pull request #1834 from bookwyrm-social/links-display

Improve link filetype and add availability field
This commit is contained in:
Mouse Reeve
2022-01-17 11:08:40 -08:00
committed by GitHub
12 changed files with 206 additions and 16 deletions

View File

@ -37,7 +37,7 @@ from .books.books import (
from .books.books import update_book_from_remote
from .books.edit_book import EditBook, ConfirmEditBook
from .books.editions import Editions, switch_edition
from .books.links import BookFileLinks, AddFileLink
from .books.links import BookFileLinks, AddFileLink, delete_link
# landing
from .landing.about import about, privacy, conduct

View File

@ -5,28 +5,49 @@ from django.shortcuts import get_object_or_404, redirect
from django.template.response import TemplateResponse
from django.views import View
from django.utils.decorators import method_decorator
from django.views.decorators.http import require_POST
from bookwyrm import forms, models
# pylint: disable=no-self-use
@method_decorator(login_required, name="dispatch")
@method_decorator(
permission_required("bookwyrm.edit_book", raise_exception=True), name="dispatch"
)
class BookFileLinks(View):
"""View all links"""
def get(self, request, book_id):
"""view links"""
book = get_object_or_404(models.Edition, id=book_id)
return TemplateResponse(
request, "book/file_links/edit_links.html", {"book": book}
)
links = book.file_links.order_by("domain__status", "created_date")
annotated_links = []
for link in links.all():
link.form = forms.FileLinkForm(instance=link)
annotated_links.append(link)
data = {"book": book, "links": annotated_links}
return TemplateResponse(request, "book/file_links/edit_links.html", data)
def post(self, request, book_id, link_id):
"""delete link"""
"""Edit a link"""
link = get_object_or_404(models.FileLink, id=link_id, book=book_id)
link.delete()
form = forms.FileLinkForm(request.POST, instance=link)
form.save()
return self.get(request, book_id)
@require_POST
@login_required
# pylint: disable=unused-argument
def delete_link(request, book_id, link_id):
"""delete link"""
link = get_object_or_404(models.FileLink, id=link_id, book=book_id)
link.delete()
return redirect("file-link", book_id)
@method_decorator(login_required, name="dispatch")
@method_decorator(
permission_required("bookwyrm.edit_book", raise_exception=True), name="dispatch"