Merge pull request #1834 from bookwyrm-social/links-display
Improve link filetype and add availability field
This commit is contained in:
@ -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
|
||||
|
@ -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"
|
||||
|
Reference in New Issue
Block a user