user_group: Move UserGroupMembershipDetails from lib/streams.py.

This commit is contained in:
Shubham Padia
2025-02-21 18:40:59 +00:00
committed by Tim Abbott
parent 63a4aea7a8
commit f6bb990b91
9 changed files with 18 additions and 20 deletions

View File

@@ -8,9 +8,12 @@ from django.conf import settings
from django.db.models import Q from django.db.models import Q
from django_stubs_ext import StrPromise from django_stubs_ext import StrPromise
from zerver.lib.streams import UserGroupMembershipDetails, get_content_access_streams from zerver.lib.streams import get_content_access_streams
from zerver.lib.topic import get_first_message_for_user_in_topic from zerver.lib.topic import get_first_message_for_user_in_topic
from zerver.lib.user_groups import get_root_id_annotated_recursive_subgroups_for_groups from zerver.lib.user_groups import (
UserGroupMembershipDetails,
get_root_id_annotated_recursive_subgroups_for_groups,
)
from zerver.lib.users import get_inaccessible_user_ids from zerver.lib.users import get_inaccessible_user_ids
from zerver.models import NamedUserGroup, UserProfile from zerver.models import NamedUserGroup, UserProfile
from zerver.models.groups import SystemGroups from zerver.models.groups import SystemGroups

View File

@@ -28,7 +28,6 @@ from zerver.lib.stream_subscription import (
num_subscribers_for_stream_id, num_subscribers_for_stream_id,
) )
from zerver.lib.streams import ( from zerver.lib.streams import (
UserGroupMembershipDetails,
can_access_stream_history, can_access_stream_history,
get_web_public_streams_queryset, get_web_public_streams_queryset,
is_user_in_groups_granting_content_access, is_user_in_groups_granting_content_access,
@@ -41,6 +40,7 @@ from zerver.lib.topic import (
) )
from zerver.lib.types import UserDisplayRecipient from zerver.lib.types import UserDisplayRecipient
from zerver.lib.user_groups import ( from zerver.lib.user_groups import (
UserGroupMembershipDetails,
get_recursive_membership_groups, get_recursive_membership_groups,
user_has_permission_for_group_setting, user_has_permission_for_group_setting,
) )

View File

@@ -25,6 +25,7 @@ from zerver.lib.string_validation import check_stream_name
from zerver.lib.timestamp import datetime_to_timestamp from zerver.lib.timestamp import datetime_to_timestamp
from zerver.lib.types import AnonymousSettingGroupDict, APIStreamDict from zerver.lib.types import AnonymousSettingGroupDict, APIStreamDict
from zerver.lib.user_groups import ( from zerver.lib.user_groups import (
UserGroupMembershipDetails,
get_recursive_group_members, get_recursive_group_members,
get_recursive_membership_groups, get_recursive_membership_groups,
get_role_based_system_groups_dict, get_role_based_system_groups_dict,
@@ -549,11 +550,6 @@ def check_for_exactly_one_stream_arg(stream_id: int | None, stream: str | None)
raise IncompatibleParametersError(["stream_id", "stream"]) raise IncompatibleParametersError(["stream_id", "stream"])
@dataclass
class UserGroupMembershipDetails:
user_recursive_group_ids: set[int] | None
def user_has_content_access( def user_has_content_access(
user_profile: UserProfile, user_profile: UserProfile,
stream: Stream, stream: Stream,

View File

@@ -19,7 +19,6 @@ from zerver.lib.stream_subscription import (
) )
from zerver.lib.stream_traffic import get_average_weekly_stream_traffic, get_streams_traffic from zerver.lib.stream_traffic import get_average_weekly_stream_traffic, get_streams_traffic
from zerver.lib.streams import ( from zerver.lib.streams import (
UserGroupMembershipDetails,
get_group_setting_value_dict_for_streams, get_group_setting_value_dict_for_streams,
get_setting_values_for_group_settings, get_setting_values_for_group_settings,
get_stream_post_policy_value_based_on_group_setting, get_stream_post_policy_value_based_on_group_setting,
@@ -38,7 +37,7 @@ from zerver.lib.types import (
SubscriptionInfo, SubscriptionInfo,
SubscriptionStreamDict, SubscriptionStreamDict,
) )
from zerver.lib.user_groups import get_recursive_membership_groups from zerver.lib.user_groups import UserGroupMembershipDetails, get_recursive_membership_groups
from zerver.models import Realm, Stream, Subscription, UserProfile from zerver.models import Realm, Stream, Subscription, UserProfile
from zerver.models.streams import get_all_streams from zerver.models.streams import get_all_streams

View File

@@ -76,6 +76,11 @@ class LockedUserGroupContext:
recursive_subgroups: list[NamedUserGroup] recursive_subgroups: list[NamedUserGroup]
@dataclass
class UserGroupMembershipDetails:
user_recursive_group_ids: set[int] | None
def has_user_group_access_for_subgroup( def has_user_group_access_for_subgroup(
user_group: NamedUserGroup, user_group: NamedUserGroup,
user_profile: UserProfile, user_profile: UserProfile,

View File

@@ -13,13 +13,13 @@ from zerver.actions.streams import do_change_stream_group_based_setting, do_chan
from zerver.actions.user_groups import check_add_user_group from zerver.actions.user_groups import check_add_user_group
from zerver.lib.message import has_message_access from zerver.lib.message import has_message_access
from zerver.lib.streams import ( from zerver.lib.streams import (
UserGroupMembershipDetails,
can_access_stream_metadata_user_ids, can_access_stream_metadata_user_ids,
update_stream_active_status_for_realm, update_stream_active_status_for_realm,
) )
from zerver.lib.test_classes import ZulipTestCase, get_topic_messages from zerver.lib.test_classes import ZulipTestCase, get_topic_messages
from zerver.lib.test_helpers import queries_captured from zerver.lib.test_helpers import queries_captured
from zerver.lib.url_encoding import near_stream_message_url from zerver.lib.url_encoding import near_stream_message_url
from zerver.lib.user_groups import UserGroupMembershipDetails
from zerver.models import Message, NamedUserGroup, Stream, UserMessage, UserProfile from zerver.models import Message, NamedUserGroup, Stream, UserMessage, UserProfile
from zerver.models.groups import SystemGroups from zerver.models.groups import SystemGroups
from zerver.models.realms import get_realm from zerver.models.realms import get_realm

View File

@@ -72,7 +72,6 @@ from zerver.lib.stream_traffic import (
from zerver.lib.streams import ( from zerver.lib.streams import (
StreamDict, StreamDict,
StreamsCategorizedByPermissionsForAddingSubscribers, StreamsCategorizedByPermissionsForAddingSubscribers,
UserGroupMembershipDetails,
access_stream_by_id, access_stream_by_id,
access_stream_by_name, access_stream_by_name,
can_access_stream_history, can_access_stream_history,
@@ -108,7 +107,7 @@ from zerver.lib.types import (
NeverSubscribedStreamDict, NeverSubscribedStreamDict,
SubscriptionInfo, SubscriptionInfo,
) )
from zerver.lib.user_groups import is_user_in_group from zerver.lib.user_groups import UserGroupMembershipDetails, is_user_in_group
from zerver.models import ( from zerver.models import (
Attachment, Attachment,
DefaultStream, DefaultStream,

View File

@@ -20,14 +20,10 @@ from zerver.actions.invites import (
from zerver.decorator import require_member_or_admin from zerver.decorator import require_member_or_admin
from zerver.lib.exceptions import InvitationError, JsonableError, OrganizationOwnerRequiredError from zerver.lib.exceptions import InvitationError, JsonableError, OrganizationOwnerRequiredError
from zerver.lib.response import json_success from zerver.lib.response import json_success
from zerver.lib.streams import ( from zerver.lib.streams import access_stream_by_id, get_streams_to_which_user_cannot_add_subscribers
UserGroupMembershipDetails,
access_stream_by_id,
get_streams_to_which_user_cannot_add_subscribers,
)
from zerver.lib.typed_endpoint import ApiParamConfig, PathOnly, typed_endpoint from zerver.lib.typed_endpoint import ApiParamConfig, PathOnly, typed_endpoint
from zerver.lib.typed_endpoint_validators import check_int_in_validator from zerver.lib.typed_endpoint_validators import check_int_in_validator
from zerver.lib.user_groups import access_user_group_for_update from zerver.lib.user_groups import UserGroupMembershipDetails, access_user_group_for_update
from zerver.models import MultiuseInvite, NamedUserGroup, PreregistrationUser, Stream, UserProfile from zerver.models import MultiuseInvite, NamedUserGroup, PreregistrationUser, Stream, UserProfile
# Convert INVITATION_LINK_VALIDITY_DAYS into minutes. # Convert INVITATION_LINK_VALIDITY_DAYS into minutes.

View File

@@ -62,7 +62,6 @@ from zerver.lib.retention import parse_message_retention_days
from zerver.lib.stream_traffic import get_streams_traffic from zerver.lib.stream_traffic import get_streams_traffic
from zerver.lib.streams import ( from zerver.lib.streams import (
StreamDict, StreamDict,
UserGroupMembershipDetails,
access_default_stream_group_by_id, access_default_stream_group_by_id,
access_stream_by_id, access_stream_by_id,
access_stream_by_name, access_stream_by_name,
@@ -90,6 +89,7 @@ from zerver.lib.typed_endpoint_validators import check_color
from zerver.lib.types import AnonymousSettingGroupDict from zerver.lib.types import AnonymousSettingGroupDict
from zerver.lib.user_groups import ( from zerver.lib.user_groups import (
GroupSettingChangeRequest, GroupSettingChangeRequest,
UserGroupMembershipDetails,
access_user_group_for_setting, access_user_group_for_setting,
get_group_setting_value_for_api, get_group_setting_value_for_api,
get_role_based_system_groups_dict, get_role_based_system_groups_dict,