subscription_info: Tighten function signatures with generic QuerySet.

Signed-off-by: Zixuan James Li <p359101898@gmail.com>
This commit is contained in:
Zixuan James Li
2022-06-23 12:20:29 -04:00
committed by Tim Abbott
parent 0528935b82
commit d7d6aa31bb
2 changed files with 21 additions and 4 deletions

View File

@@ -1,7 +1,18 @@
import hashlib import hashlib
from collections import defaultdict from collections import defaultdict
from dataclasses import dataclass from dataclasses import dataclass
from typing import Any, Collection, Dict, Iterable, List, Mapping, Optional, Set, Tuple from typing import (
TYPE_CHECKING,
Any,
Collection,
Dict,
Iterable,
List,
Mapping,
Optional,
Set,
Tuple,
)
import orjson import orjson
from django.conf import settings from django.conf import settings
@@ -64,6 +75,9 @@ from zerver.models import (
) )
from zerver.tornado.django_api import send_event from zerver.tornado.django_api import send_event
if TYPE_CHECKING:
from django.db.models.query import _QuerySet as ValuesQuerySet
@transaction.atomic(savepoint=False) @transaction.atomic(savepoint=False)
def do_deactivate_stream( def do_deactivate_stream(
@@ -133,7 +147,9 @@ def do_deactivate_stream(
) )
def get_subscriber_ids(stream: Stream, requesting_user: Optional[UserProfile] = None) -> List[str]: def get_subscriber_ids(
stream: Stream, requesting_user: Optional[UserProfile] = None
) -> "ValuesQuerySet[Subscription, int]":
subscriptions_query = get_subscribers_query(stream, requesting_user) subscriptions_query = get_subscribers_query(stream, requesting_user)
return subscriptions_query.values_list("user_profile_id", flat=True) return subscriptions_query.values_list("user_profile_id", flat=True)

View File

@@ -370,8 +370,9 @@ def bulk_get_subscriber_user_ids(
return result return result
def get_subscribers_query(stream: Stream, requesting_user: Optional[UserProfile]) -> QuerySet: def get_subscribers_query(
# TODO: Make a generic stub for QuerySet stream: Stream, requesting_user: Optional[UserProfile]
) -> QuerySet[Subscription]:
"""Build a query to get the subscribers list for a stream, raising a JsonableError if: """Build a query to get the subscribers list for a stream, raising a JsonableError if:
'realm' is optional in stream. 'realm' is optional in stream.