fix for recent where annotations weren't being accounted for.

this is now working correctly.
This commit is contained in:
ajurna
2020-05-25 18:29:47 +01:00
parent 1f32d518bf
commit b420f074d6
2 changed files with 15 additions and 3 deletions

View File

@@ -182,6 +182,15 @@ def generate_directory(user, directory=False):
def generate_label(book): 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 = '<center><span class="label label-default">Unread</span></center>' unread_text = '<center><span class="label label-default">Unread</span></center>'
if not hasattr(book, 'unread'): if not hasattr(book, 'unread'):
label_text = unread_text label_text = unread_text

View File

@@ -8,7 +8,7 @@ from os import path
from django.contrib.auth import authenticate, login from django.contrib.auth import authenticate, login
from django.contrib.auth.decorators import login_required, user_passes_test from django.contrib.auth.decorators import login_required, user_passes_test
from django.contrib.auth.models import User 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.db.transaction import atomic
from django.http import HttpResponse, FileResponse from django.http import HttpResponse, FileResponse
from django.shortcuts import get_object_or_404, redirect, render from django.shortcuts import get_object_or_404, redirect, render
@@ -110,7 +110,7 @@ def recent_comics_json(request):
start = int(request.POST["start"]) start = int(request.POST["start"])
end = start + int(request.POST["length"]) end = start + int(request.POST["length"])
icon = '<span class="fa fa-book"></span>' icon = '<span class="fa fa-book"></span>'
comics = ComicBook.objects.all() comics = ComicBook.objects.all().annotate(total_pages=Count('comicpage'))
response_data = dict() response_data = dict()
response_data["recordsTotal"] = comics.count() response_data["recordsTotal"] = comics.count()
if request.POST["search[value]"]: 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) status, created = ComicStatus.objects.get_or_create(comic=book, user=request.user)
if created: if created:
status.save() status.save()
book.unread = status.unread
book.finished = status.finished
book.last_read_page = status.last_read_page
response_data["data"].append( response_data["data"].append(
{ {
"selector": urlsafe_base64_encode(book.selector.bytes), "selector": urlsafe_base64_encode(book.selector.bytes),
@@ -139,7 +142,7 @@ def recent_comics_json(request):
"type": "book", "type": "book",
"name": book.file_name, "name": book.file_name,
"date": book.date_added.strftime("%d/%m/%y-%H:%M"), "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)), "url": "/comic/read/{0}/".format(urlsafe_base64_encode(book.selector.bytes)),
} }
) )