update_subscriber_counts: Fix union typing.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg
2025-09-19 18:47:19 -07:00
committed by Tim Abbott
parent 2eb2d5b6de
commit 7f3bb4523c

View File

@@ -5,7 +5,7 @@ from typing import Any
from django.conf import settings from django.conf import settings
from django.db import transaction from django.db import transaction
from django.db.models import QuerySet from django.db.models import F, QuerySet
from django.utils.timezone import now as timezone_now from django.utils.timezone import now as timezone_now
from typing_extensions import override from typing_extensions import override
@@ -85,10 +85,12 @@ accurate; this command is run as a daily cron job to ensure the number is accura
streams_from_users = streams_from_users.filter(realm=realm) streams_from_users = streams_from_users.filter(realm=realm)
stream_ids: QuerySet[Any, int] = ( stream_ids: QuerySet[Any, int] = (
changed_subs.values_list("modified_stream_id", flat=True) changed_subs.distinct("modified_stream_id")
.distinct()
.order_by("modified_stream_id") .order_by("modified_stream_id")
).union(streams_from_users.values_list("id", flat=True)) .annotate(stream_id=F("modified_stream_id"))
.union(streams_from_users.annotate(stream_id="id"))
.values_list("stream_id", flat=True)
)
elif realm := self.get_realm(options): elif realm := self.get_realm(options):
stream_ids = streams.filter(realm=realm).values_list("id", flat=True) stream_ids = streams.filter(realm=realm).values_list("id", flat=True)
else: else: