From 39222118abc0775d24be0b2a061d75dfd655e3b4 Mon Sep 17 00:00:00 2001 From: Ajurna Date: Tue, 25 May 2021 09:10:06 +0100 Subject: [PATCH] fix for error where db cursor closes when looking for usermisc objects by relation. --- comic/templates/comic/read_comic.html | 2 +- comic/views.py | 21 +++++++++++++-------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/comic/templates/comic/read_comic.html b/comic/templates/comic/read_comic.html index 0ec2853..7767046 100644 --- a/comic/templates/comic/read_comic.html +++ b/comic/templates/comic/read_comic.html @@ -11,7 +11,7 @@ {% for page in pages %}
{% if page.content_type|first in 'image' %} - {{ page.page_file_name }} + {{ page.page_file_name }} {% else %}

{% endif %} diff --git a/comic/views.py b/comic/views.py index 9c96939..6a31c7a 100644 --- a/comic/views.py +++ b/comic/views.py @@ -15,7 +15,7 @@ from django.views.decorators.csrf import ensure_csrf_cookie from django.views.decorators.http import require_POST 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 ( Menu, generate_breadcrumbs_from_menu, @@ -145,7 +145,8 @@ def recent_comics_json(request): 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["data"] = list() @@ -291,15 +292,15 @@ def read_comic(request, comic_selector): selector = uuid.UUID(bytes=urlsafe_base64_decode(comic_selector)) book = get_object_or_404(ComicBook, selector=selector) + misc, _ = UserMisc.objects.get_or_create(user=request.user) if book.directory: - if book.directory.classification > request.user.usermisc.allowed_to_read: + if book.directory.classification > misc.allowed_to_read: return redirect('index') pages = ComicPage.objects.filter(Comic=book) status, _ = ComicStatus.objects.get_or_create(comic=book, user=request.user) title = "CBWebReader - " + book.file_name - print(book.nav(request.user)) context = { "book": book, "pages": pages, @@ -339,8 +340,9 @@ def set_read_page(request, comic_selector, page): def get_image(request, comic_selector, page): selector = uuid.UUID(bytes=urlsafe_base64_decode(comic_selector)) book = ComicBook.objects.get(selector=selector) + misc, _ = UserMisc.objects.get_or_create(user=request.user) 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) img, content = book.get_image(int(page)) return FileResponse(img, content_type=content) @@ -351,8 +353,9 @@ def get_image(request, comic_selector, page): def comic_thumbnail(request, comic_selector): selector = uuid.UUID(bytes=urlsafe_base64_decode(comic_selector)) book = ComicBook.objects.get(selector=selector) + misc, _ = UserMisc.objects.get_or_create(user=request.user) 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 redirect(book.get_thumbnail_url()) @@ -362,7 +365,8 @@ def comic_thumbnail(request, comic_selector): def directory_thumbnail(request, directory_selector): selector = uuid.UUID(bytes=urlsafe_base64_decode(directory_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 redirect(folder.get_thumbnail_url()) @@ -371,7 +375,8 @@ def directory_thumbnail(request, directory_selector): def get_pdf(request, comic_selector): selector = uuid.UUID(bytes=urlsafe_base64_decode(comic_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 FileResponse(open(book.get_pdf(), 'rb'), content_type='application/pdf')