mirror of
https://github.com/zulip/zulip.git
synced 2025-11-15 03:11:54 +00:00
streams: Refactor code to compute setting group values.
This commit adds a new function to compute setting group values for a list of streams, so we can avoid having duplicate code for computing setting group IDs from streams.
This commit is contained in:
@@ -39,8 +39,8 @@ from zerver.lib.stream_traffic import get_streams_traffic
|
|||||||
from zerver.lib.streams import (
|
from zerver.lib.streams import (
|
||||||
can_access_stream_user_ids,
|
can_access_stream_user_ids,
|
||||||
check_basic_stream_access,
|
check_basic_stream_access,
|
||||||
|
get_group_setting_value_dict_for_streams,
|
||||||
get_occupied_streams,
|
get_occupied_streams,
|
||||||
get_setting_values_for_group_settings,
|
|
||||||
get_stream_permission_policy_name,
|
get_stream_permission_policy_name,
|
||||||
render_stream_description,
|
render_stream_description,
|
||||||
send_stream_creation_event,
|
send_stream_creation_event,
|
||||||
@@ -354,13 +354,8 @@ def send_subscription_add_events(
|
|||||||
subscribers = list(subscriber_dict[stream.id])
|
subscribers = list(subscriber_dict[stream.id])
|
||||||
stream_subscribers_dict[stream.id] = subscribers
|
stream_subscribers_dict[stream.id] = subscribers
|
||||||
|
|
||||||
setting_group_ids = set()
|
streams = [sub_info.stream for sub_info in sub_info_list]
|
||||||
for sub_info in sub_info_list:
|
setting_groups_dict = get_group_setting_value_dict_for_streams(streams)
|
||||||
stream = sub_info.stream
|
|
||||||
for setting_name in Stream.stream_permission_group_settings:
|
|
||||||
setting_group_ids.add(getattr(stream, setting_name + "_id"))
|
|
||||||
|
|
||||||
setting_groups_dict = get_setting_values_for_group_settings(list(setting_group_ids))
|
|
||||||
|
|
||||||
for user_id, sub_infos in info_by_user.items():
|
for user_id, sub_infos in info_by_user.items():
|
||||||
sub_dicts: list[APISubscriptionDict] = []
|
sub_dicts: list[APISubscriptionDict] = []
|
||||||
@@ -460,12 +455,7 @@ def send_stream_creation_events_for_previously_inaccessible_streams(
|
|||||||
stream_ids = set(altered_user_dict.keys())
|
stream_ids = set(altered_user_dict.keys())
|
||||||
recent_traffic = get_streams_traffic(stream_ids, realm)
|
recent_traffic = get_streams_traffic(stream_ids, realm)
|
||||||
|
|
||||||
setting_group_ids = set()
|
streams = [stream_dict[stream_id] for stream_id in stream_ids]
|
||||||
for stream_id in stream_ids:
|
|
||||||
stream = stream_dict[stream_id]
|
|
||||||
for setting_name in Stream.stream_permission_group_settings:
|
|
||||||
setting_group_ids.add(getattr(stream, setting_name + "_id"))
|
|
||||||
|
|
||||||
setting_groups_dict: dict[int, int | AnonymousSettingGroupDict] | None = None
|
setting_groups_dict: dict[int, int | AnonymousSettingGroupDict] | None = None
|
||||||
|
|
||||||
for stream_id, stream_users_ids in altered_user_dict.items():
|
for stream_id, stream_users_ids in altered_user_dict.items():
|
||||||
@@ -489,7 +479,7 @@ def send_stream_creation_events_for_previously_inaccessible_streams(
|
|||||||
|
|
||||||
if notify_user_ids:
|
if notify_user_ids:
|
||||||
if setting_groups_dict is None:
|
if setting_groups_dict is None:
|
||||||
setting_groups_dict = get_setting_values_for_group_settings(list(setting_group_ids))
|
setting_groups_dict = get_group_setting_value_dict_for_streams(streams)
|
||||||
|
|
||||||
send_stream_creation_event(
|
send_stream_creation_event(
|
||||||
realm, stream, notify_user_ids, recent_traffic, setting_groups_dict
|
realm, stream, notify_user_ids, recent_traffic, setting_groups_dict
|
||||||
|
|||||||
@@ -999,6 +999,17 @@ def get_streams_for_user(
|
|||||||
return list(streams)
|
return list(streams)
|
||||||
|
|
||||||
|
|
||||||
|
def get_group_setting_value_dict_for_streams(
|
||||||
|
streams: list[Stream],
|
||||||
|
) -> dict[int, int | AnonymousSettingGroupDict]:
|
||||||
|
setting_group_ids = set()
|
||||||
|
for stream in streams:
|
||||||
|
for setting_name in Stream.stream_permission_group_settings:
|
||||||
|
setting_group_ids.add(getattr(stream, setting_name + "_id"))
|
||||||
|
|
||||||
|
return get_setting_values_for_group_settings(list(setting_group_ids))
|
||||||
|
|
||||||
|
|
||||||
def get_setting_values_for_group_settings(
|
def get_setting_values_for_group_settings(
|
||||||
group_ids: list[int],
|
group_ids: list[int],
|
||||||
) -> dict[int, int | AnonymousSettingGroupDict]:
|
) -> dict[int, int | AnonymousSettingGroupDict]:
|
||||||
@@ -1056,12 +1067,7 @@ def do_get_streams(
|
|||||||
stream_ids = {stream.id for stream in streams}
|
stream_ids = {stream.id for stream in streams}
|
||||||
recent_traffic = get_streams_traffic(stream_ids, user_profile.realm)
|
recent_traffic = get_streams_traffic(stream_ids, user_profile.realm)
|
||||||
|
|
||||||
setting_group_ids = set()
|
setting_groups_dict = get_group_setting_value_dict_for_streams(streams)
|
||||||
for stream in streams:
|
|
||||||
for setting_name in Stream.stream_permission_group_settings:
|
|
||||||
setting_group_ids.add(getattr(stream, setting_name + "_id"))
|
|
||||||
|
|
||||||
setting_groups_dict = get_setting_values_for_group_settings(list(setting_group_ids))
|
|
||||||
|
|
||||||
stream_dicts = sorted(
|
stream_dicts = sorted(
|
||||||
(stream_to_dict(stream, recent_traffic, setting_groups_dict) for stream in streams),
|
(stream_to_dict(stream, recent_traffic, setting_groups_dict) for stream in streams),
|
||||||
|
|||||||
Reference in New Issue
Block a user