fix for error where db cursor closes when looking for usermisc objects by relation.

This commit is contained in:
2021-05-25 09:10:06 +01:00
parent 715f0838b9
commit 39222118ab
2 changed files with 14 additions and 9 deletions

View File

@@ -15,7 +15,7 @@ from django.views.decorators.csrf import ensure_csrf_cookie
from django.views.decorators.http import require_POST from django.views.decorators.http import require_POST
from .forms import AccountForm, AddUserForm, EditUserForm, InitialSetupForm, DirectoryEditForm from .forms import AccountForm, AddUserForm, EditUserForm, InitialSetupForm, DirectoryEditForm
from .models import ComicBook, ComicPage, ComicStatus, Directory from .models import ComicBook, ComicPage, ComicStatus, Directory, UserMisc
from .util import ( from .util import (
Menu, Menu,
generate_breadcrumbs_from_menu, generate_breadcrumbs_from_menu,
@@ -145,7 +145,8 @@ def recent_comics_json(request):
output_field=PositiveSmallIntegerField(choices=Directory.Classification.choices) output_field=PositiveSmallIntegerField(choices=Directory.Classification.choices)
) )
) )
comics = comics.filter(classification__lte=request.user.usermisc.allowed_to_read) misc, _ = UserMisc.objects.get_or_create(user=request.user)
comics = comics.filter(classification__lte=misc.allowed_to_read)
response_data["recordsFiltered"] = comics.count() response_data["recordsFiltered"] = comics.count()
response_data["data"] = list() response_data["data"] = list()
@@ -291,15 +292,15 @@ def read_comic(request, comic_selector):
selector = uuid.UUID(bytes=urlsafe_base64_decode(comic_selector)) selector = uuid.UUID(bytes=urlsafe_base64_decode(comic_selector))
book = get_object_or_404(ComicBook, selector=selector) book = get_object_or_404(ComicBook, selector=selector)
misc, _ = UserMisc.objects.get_or_create(user=request.user)
if book.directory: if book.directory:
if book.directory.classification > request.user.usermisc.allowed_to_read: if book.directory.classification > misc.allowed_to_read:
return redirect('index') return redirect('index')
pages = ComicPage.objects.filter(Comic=book) pages = ComicPage.objects.filter(Comic=book)
status, _ = ComicStatus.objects.get_or_create(comic=book, user=request.user) status, _ = ComicStatus.objects.get_or_create(comic=book, user=request.user)
title = "CBWebReader - " + book.file_name title = "CBWebReader - " + book.file_name
print(book.nav(request.user))
context = { context = {
"book": book, "book": book,
"pages": pages, "pages": pages,
@@ -339,8 +340,9 @@ def set_read_page(request, comic_selector, page):
def get_image(request, comic_selector, page): def get_image(request, comic_selector, page):
selector = uuid.UUID(bytes=urlsafe_base64_decode(comic_selector)) selector = uuid.UUID(bytes=urlsafe_base64_decode(comic_selector))
book = ComicBook.objects.get(selector=selector) book = ComicBook.objects.get(selector=selector)
misc, _ = UserMisc.objects.get_or_create(user=request.user)
if book.directory: if book.directory:
if book.directory.classification > request.user.usermisc.allowed_to_read: if book.directory.classification > misc.allowed_to_read:
return HttpResponse(status=401) return HttpResponse(status=401)
img, content = book.get_image(int(page)) img, content = book.get_image(int(page))
return FileResponse(img, content_type=content) return FileResponse(img, content_type=content)
@@ -351,8 +353,9 @@ def get_image(request, comic_selector, page):
def comic_thumbnail(request, comic_selector): def comic_thumbnail(request, comic_selector):
selector = uuid.UUID(bytes=urlsafe_base64_decode(comic_selector)) selector = uuid.UUID(bytes=urlsafe_base64_decode(comic_selector))
book = ComicBook.objects.get(selector=selector) book = ComicBook.objects.get(selector=selector)
misc, _ = UserMisc.objects.get_or_create(user=request.user)
if book.directory: if book.directory:
if book.directory.classification > request.user.usermisc.allowed_to_read: if book.directory.classification > misc.allowed_to_read:
return HttpResponse(status=401) return HttpResponse(status=401)
return redirect(book.get_thumbnail_url()) return redirect(book.get_thumbnail_url())
@@ -362,7 +365,8 @@ def comic_thumbnail(request, comic_selector):
def directory_thumbnail(request, directory_selector): def directory_thumbnail(request, directory_selector):
selector = uuid.UUID(bytes=urlsafe_base64_decode(directory_selector)) selector = uuid.UUID(bytes=urlsafe_base64_decode(directory_selector))
folder = Directory.objects.get(selector=selector) folder = Directory.objects.get(selector=selector)
if folder.classification > request.user.usermisc.allowed_to_read: misc, _ = UserMisc.objects.get_or_create(user=request.user)
if folder.classification > misc.allowed_to_read:
return HttpResponse(status=401) return HttpResponse(status=401)
return redirect(folder.get_thumbnail_url()) return redirect(folder.get_thumbnail_url())
@@ -371,7 +375,8 @@ def directory_thumbnail(request, directory_selector):
def get_pdf(request, comic_selector): def get_pdf(request, comic_selector):
selector = uuid.UUID(bytes=urlsafe_base64_decode(comic_selector)) selector = uuid.UUID(bytes=urlsafe_base64_decode(comic_selector))
book = ComicBook.objects.get(selector=selector) book = ComicBook.objects.get(selector=selector)
if book.directory.classification > request.user.usermisc.allowed_to_read: misc, _ = UserMisc.objects.get_or_create(user=request.user)
if book.directory.classification > misc.allowed_to_read:
return HttpResponse(status=401) return HttpResponse(status=401)
return FileResponse(open(book.get_pdf(), 'rb'), content_type='application/pdf') return FileResponse(open(book.get_pdf(), 'rb'), content_type='application/pdf')