added a lock on a critical path when regenerating pages. this should allow all images to load correctly

This commit is contained in:
2021-04-09 11:29:03 +01:00
parent c1f5d80ff7
commit 1d5dcb90c0
10 changed files with 125 additions and 122 deletions

View File

@@ -9,6 +9,7 @@ from django.db.transaction import atomic
from django.http import HttpResponse, FileResponse
from django.shortcuts import get_object_or_404, redirect, render
from django.utils.http import urlsafe_base64_decode, urlsafe_base64_encode
from django.views.decorators.clickjacking import xframe_options_sameorigin
from django.views.decorators.csrf import ensure_csrf_cookie
from django.views.decorators.http import require_POST
@@ -290,8 +291,10 @@ def settings_page(request):
return render(request, "comic/settings_page.html", context)
@login_required
def read_comic(request, comic_selector):
selector = uuid.UUID(bytes=urlsafe_base64_decode(comic_selector))
try:
book = ComicBook.objects.get(selector=selector)
@@ -309,7 +312,6 @@ def read_comic(request, comic_selector):
context = {
"book": book,
"pages": pages,
# "orig_file_name": book.page_name(page),
"nav": book.nav(request.user),
"status": status,
"breadcrumbs": generate_breadcrumbs_from_path(book.directory, book),
@@ -320,6 +322,8 @@ def read_comic(request, comic_selector):
context['status'].last_read_page += 1
return render(request, "comic/read_comic_pdf.html", context)
else:
book.verify_pages(pages)
context['pages'] = ComicPage.objects.filter(Comic=book)
return render(request, "comic/read_comic.html", context)
@@ -339,6 +343,7 @@ def set_read_page(request, comic_selector, page):
return HttpResponse(status=200)
@xframe_options_sameorigin
@login_required
def get_image(_, comic_selector, page):
selector = uuid.UUID(bytes=urlsafe_base64_decode(comic_selector))