From 7132f43f9cb75a3cc5594bf4829a4fd62a97d795 Mon Sep 17 00:00:00 2001 From: "jindra12.underdark" <jindra12.underdark@gmail.com> Date: Wed, 19 Jul 2023 23:00:53 +0200 Subject: [PATCH] Correct tag count #210 --- shared/models.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/shared/models.py b/shared/models.py index 1025dc97..9d5de087 100644 --- a/shared/models.py +++ b/shared/models.py @@ -4,8 +4,8 @@ from functools import reduce from django.apps import apps from django.db import models -from django.db.models import F, Q -from django.db.models.expressions import F, Value +from django.db.models import Q +from django.db.models.expressions import ExpressionWrapper, F, Value from django.db.models.functions import Coalesce from django.utils import timezone from modelcluster.fields import ParentalKey, ParentalManyToManyField @@ -313,7 +313,10 @@ class ArticlesMixin(models.Model): def evaluate_page_query(self, results): return list( reduce( - lambda unique, item: unique | {f"{item['union_page_ptr_id']}": item}, + lambda unique, item: unique + if item["union_page_ptr_id"] in unique + and "union_shared_from_id" in item + else unique | {f"{item['union_page_ptr_id']}": item}, list(results), {}, ).values() @@ -564,11 +567,15 @@ class ArticlesMixin(models.Model): articles: list, tags_model_query=None, ): + own_page_type = self.determine_page_type() get_ids_by_page_type = lambda page_type: list( map( lambda article: article.page_ptr.id, filter( - lambda article: article.shared_type == page_type, + lambda article: article.shared_type == page_type + or ( + article.shared_type is None and own_page_type.value == page_type + ), articles, ), ) -- GitLab