mirror of
https://github.com/ajurna/cbwebreader.git
synced 2025-12-06 06:17:17 +00:00
optimised query on recent_comics_json
This commit is contained in:
@@ -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, Count
|
from django.db.models import Max, Count, F
|
||||||
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
|
||||||
@@ -126,15 +126,14 @@ def recent_comics_json(request):
|
|||||||
else:
|
else:
|
||||||
order_string += "date_added"
|
order_string += "date_added"
|
||||||
comics = comics.order_by(order_string)
|
comics = comics.order_by(order_string)
|
||||||
|
comics = comics.filter(comicstatus__user=request.user).annotate(
|
||||||
|
unread=F('comicstatus__unread'),
|
||||||
|
finished=F('comicstatus__finished'),
|
||||||
|
last_read_page=F('comicstatus__last_read_page')
|
||||||
|
)
|
||||||
response_data["recordsFiltered"] = comics.count()
|
response_data["recordsFiltered"] = comics.count()
|
||||||
response_data["data"] = list()
|
response_data["data"] = list()
|
||||||
for book in comics[start:end]:
|
for book in comics[start:end]:
|
||||||
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(
|
response_data["data"].append(
|
||||||
{
|
{
|
||||||
"selector": urlsafe_base64_encode(book.selector.bytes),
|
"selector": urlsafe_base64_encode(book.selector.bytes),
|
||||||
|
|||||||
Reference in New Issue
Block a user