diff --git a/zerver/actions/user_groups.py b/zerver/actions/user_groups.py index d676d1a968..98d88d5ee8 100644 --- a/zerver/actions/user_groups.py +++ b/zerver/actions/user_groups.py @@ -1,5 +1,5 @@ import datetime -from typing import Dict, List, Sequence, Union +from typing import Dict, List, Sequence, TypedDict import django.db.utils from django.db import transaction @@ -19,6 +19,12 @@ from zerver.models import ( from zerver.tornado.django_api import send_event +class MemberGroupUserDict(TypedDict): + id: int + role: int + date_joined: datetime.datetime + + @transaction.atomic(savepoint=False) def update_users_in_full_members_system_group( realm: Realm, affected_user_ids: Sequence[int] = [] @@ -30,8 +36,8 @@ def update_users_in_full_members_system_group( realm=realm, name="@role:members", is_system_group=True ) - full_member_group_users: List[Dict[str, Union[int, datetime.datetime]]] = list() - member_group_users: List[Dict[str, Union[int, datetime.datetime]]] = list() + full_member_group_users: List[MemberGroupUserDict] = list() + member_group_users: List[MemberGroupUserDict] = list() if affected_user_ids: full_member_group_users = list( @@ -52,7 +58,7 @@ def update_users_in_full_members_system_group( members_system_group.direct_members.all().values("id", "role", "date_joined") ) - def is_provisional_member(user: Dict[str, Union[int, datetime.datetime]]) -> bool: + def is_provisional_member(user: MemberGroupUserDict) -> bool: diff = (timezone_now() - user["date_joined"]).days if diff < realm.waiting_period_threshold: return True