From cfe0cbca6253bf393e07fd2c3af5aafc618c8832 Mon Sep 17 00:00:00 2001 From: Mark <162816078+markashton480@users.noreply.github.com> Date: Sat, 28 Feb 2026 17:21:29 +0000 Subject: [PATCH] fix(mypy): work around django-plugin annotate crash in comment viewset --- apps/comments/wagtail_hooks.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/apps/comments/wagtail_hooks.py b/apps/comments/wagtail_hooks.py index 200fe1a..c30ac32 100644 --- a/apps/comments/wagtail_hooks.py +++ b/apps/comments/wagtail_hooks.py @@ -1,3 +1,5 @@ +from typing import Any, cast + from django.db.models import Count, Q from django.utils.translation import gettext_lazy as _ from django.utils.translation import ngettext @@ -49,22 +51,21 @@ class CommentViewSet(SnippetViewSet): add_to_admin_menu = True def get_queryset(self, request): - return ( - self.model.objects.all() - .select_related("article", "parent") - .annotate( - pending_in_article=Count( - "article__comments", - filter=Q(article__comments__is_approved=False), - distinct=True, - ) + base_qs = self.model.objects.all().select_related("article", "parent") + # mypy-django-plugin currently crashes on QuerySet.annotate() in this file. + typed_qs = cast(Any, base_qs) + return typed_qs.annotate( + pending_in_article=Count( + "article__comments", + filter=Q(article__comments__is_approved=False), + distinct=True, ) ) def pending_in_article(self, obj): return obj.pending_in_article - pending_in_article.short_description = "Pending (article)" + pending_in_article.short_description = "Pending (article)" # type: ignore[attr-defined] register_snippet(CommentViewSet)