1
0
Fork 0

Fixes editing links

This commit is contained in:
Mouse Reeve 2022-11-25 08:28:45 -08:00
parent 9dd0e22a47
commit 81ab08aaa3
4 changed files with 39 additions and 16 deletions

View file

@ -21,11 +21,7 @@ class BookFileLinks(View):
def get(self, request, book_id):
"""view links"""
book = get_object_or_404(models.Edition, id=book_id)
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)
annotated_links = get_annotated_links(book)
data = {"book": book, "links": annotated_links}
return TemplateResponse(request, "book/file_links/edit_links.html", data)
@ -34,8 +30,30 @@ class BookFileLinks(View):
"""Edit a link"""
link = get_object_or_404(models.FileLink, id=link_id, book=book_id)
form = forms.FileLinkForm(request.POST, instance=link)
form.save(request)
return self.get(request, book_id)
if form.is_valid():
form.save(request)
return redirect("file-link", book_id)
# this form shouldn't ever really get here, since it's just a dropdown
# get the data again rather than redirecting
book = get_object_or_404(models.Edition, id=book_id)
annotated_links = get_annotated_links(book, form=form)
data = {"book": book, "links": annotated_links}
return TemplateResponse(request, "book/file_links/edit_links.html", data)
def get_annotated_links(book, form=None):
"""The links for this book, plus the forms to edit those links"""
links = book.file_links.order_by("domain__status", "created_date")
annotated_links = []
for link in links.all():
if form and link.id == form.instance.id:
link.form = form
else:
link.form = forms.FileLinkForm(instance=link)
annotated_links.append(link)
return annotated_links
@require_POST