From 1f32d518bffb539ee272ee1a03e135f46b513ee9 Mon Sep 17 00:00:00 2001 From: ajurna Date: Mon, 25 May 2020 18:08:33 +0100 Subject: [PATCH] fix for bug where i hadn't accounted for multiple users in the optimised queries. --- Pipfile | 1 + Pipfile.lock | 12 +++++++++++- comic/util.py | 7 ++++--- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/Pipfile b/Pipfile index 2766a3e..2602c3d 100644 --- a/Pipfile +++ b/Pipfile @@ -6,6 +6,7 @@ verify_ssl = true [dev-packages] django-silk = "*" v = {editable = true,version = "*"} +mysqlclient = "*" [packages] django = "*" diff --git a/Pipfile.lock b/Pipfile.lock index caaa699..0c19033 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "f3ea292d4931669ab22fcbc34fc26c34cfd36d5746a8ecc1e503bdf23f5efc5b" + "sha256": "b56ff3d531e5d0251ac92d567b1a331495fbbf87740086710afe6e4a0d61d6a7" }, "pipfile-spec": 6, "requires": { @@ -236,6 +236,16 @@ ], "version": "==1.1.1" }, + "mysqlclient": { + "hashes": [ + "sha256:4c82187dd6ab3607150fbb1fa5ef4643118f3da122b8ba31c3149ddd9cf0cb39", + "sha256:9e6080a7aee4cc6a06b58b59239f20f1d259c1d2fddf68ddeed242d2311c7087", + "sha256:f3fdaa9a38752a3b214a6fe79d7cae3653731a53e577821f9187e67cbecb2e16", + "sha256:f646f8d17d02be0872291f258cce3813497bc7888cd4712a577fd1e719b2f213" + ], + "index": "pypi", + "version": "==1.4.6" + }, "pycodestyle": { "hashes": [ "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367", diff --git a/comic/util.py b/comic/util.py index 38760f3..001711d 100644 --- a/comic/util.py +++ b/comic/util.py @@ -1,7 +1,7 @@ from collections import OrderedDict from os import listdir, path -from django.db.models import Count, Q, F +from django.db.models import Count, Q, F, Max, ExpressionWrapper, Prefetch from django.utils.http import urlsafe_base64_encode from .models import ComicBook, Directory, Setting @@ -142,8 +142,9 @@ def generate_directory(user, directory=False): total_read=Count('comicbook__comicstatus', Q(comicbook__comicstatus__finished=True, comicbook__comicstatus__user=user))) - file_list_obj = file_list_obj.annotate(total_pages=Count('comicpage')).annotate( - last_read_page=F('comicstatus__last_read_page')).annotate(finished=F('comicstatus__finished')).annotate(unread=F('comicstatus__unread')) + file_list_obj = file_list_obj.filter(comicstatus__user=user).annotate(total_pages=Count('comicpage')).annotate( + last_read_page=F('comicstatus__last_read_page')).annotate( + finished=F('comicstatus__finished')).annotate(unread=F('comicstatus__unread')) for directory_obj in dir_list_obj: df = DirFile()