From b420f074d6b7d766c14bd994380b14768565d4c2 Mon Sep 17 00:00:00 2001 From: ajurna Date: Mon, 25 May 2020 18:29:47 +0100 Subject: [PATCH] fix for recent where annotations weren't being accounted for. this is now working correctly. --- comic/util.py | 9 +++++++++ comic/views.py | 9 ++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/comic/util.py b/comic/util.py index 001711d..9bf00cd 100644 --- a/comic/util.py +++ b/comic/util.py @@ -182,6 +182,15 @@ def generate_directory(user, directory=False): def generate_label(book): + """ + book need to be annotated with the following from ComicStatus + * unread + * finished + * last_read_page + * total_pages + :param book: ComicBook + :return: str + """ unread_text = '
Unread
' if not hasattr(book, 'unread'): label_text = unread_text diff --git a/comic/views.py b/comic/views.py index 9d9e13c..0e542a4 100644 --- a/comic/views.py +++ b/comic/views.py @@ -8,7 +8,7 @@ from os import path from django.contrib.auth import authenticate, login from django.contrib.auth.decorators import login_required, user_passes_test from django.contrib.auth.models import User -from django.db.models import Max +from django.db.models import Max, Count from django.db.transaction import atomic from django.http import HttpResponse, FileResponse from django.shortcuts import get_object_or_404, redirect, render @@ -110,7 +110,7 @@ def recent_comics_json(request): start = int(request.POST["start"]) end = start + int(request.POST["length"]) icon = '' - comics = ComicBook.objects.all() + comics = ComicBook.objects.all().annotate(total_pages=Count('comicpage')) response_data = dict() response_data["recordsTotal"] = comics.count() if request.POST["search[value]"]: @@ -132,6 +132,9 @@ def recent_comics_json(request): status, created = ComicStatus.objects.get_or_create(comic=book, user=request.user) if created: status.save() + book.unread = status.unread + book.finished = status.finished + book.last_read_page = status.last_read_page response_data["data"].append( { "selector": urlsafe_base64_encode(book.selector.bytes), @@ -139,7 +142,7 @@ def recent_comics_json(request): "type": "book", "name": book.file_name, "date": book.date_added.strftime("%d/%m/%y-%H:%M"), - "label": generate_label(book, status), + "label": generate_label(book), "url": "/comic/read/{0}/".format(urlsafe_base64_encode(book.selector.bytes)), } )