mirror of https://github.com/zulip/zulip.git
streams: Compute object only when needed.
This commit updates code to compute the values for group permission settings in send_stream_creation_events_for_previously_inaccessible_streams only when we need to send the events. This helps us in avoiding unnecessary DB queries.
This commit is contained in:
parent
f2158c42a7
commit
b20c24c09d
|
@ -466,7 +466,7 @@ def send_stream_creation_events_for_previously_inaccessible_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))
|
||||
setting_groups_dict: dict[int, int | AnonymousSettingGroupDict] | None = None
|
||||
|
||||
for stream_id, stream_users_ids in altered_user_dict.items():
|
||||
stream = stream_dict[stream_id]
|
||||
|
@ -488,6 +488,9 @@ def send_stream_creation_events_for_previously_inaccessible_streams(
|
|||
notify_user_ids = list(stream_users_ids & altered_guests)
|
||||
|
||||
if notify_user_ids:
|
||||
if setting_groups_dict is None:
|
||||
setting_groups_dict = get_setting_values_for_group_settings(list(setting_group_ids))
|
||||
|
||||
send_stream_creation_event(
|
||||
realm, stream, notify_user_ids, recent_traffic, setting_groups_dict
|
||||
)
|
||||
|
|
|
@ -4801,7 +4801,7 @@ class SubscriptionAPITest(ZulipTestCase):
|
|||
streams_to_sub = ["multi_user_stream"]
|
||||
with (
|
||||
self.capture_send_event_calls(expected_num_events=5) as events,
|
||||
self.assert_database_query_count(40),
|
||||
self.assert_database_query_count(39),
|
||||
):
|
||||
self.common_subscribe_to_streams(
|
||||
self.test_user,
|
||||
|
@ -4827,7 +4827,7 @@ class SubscriptionAPITest(ZulipTestCase):
|
|||
# Now add ourselves
|
||||
with (
|
||||
self.capture_send_event_calls(expected_num_events=2) as events,
|
||||
self.assert_database_query_count(16),
|
||||
self.assert_database_query_count(15),
|
||||
):
|
||||
self.common_subscribe_to_streams(
|
||||
self.test_user,
|
||||
|
@ -5273,7 +5273,7 @@ class SubscriptionAPITest(ZulipTestCase):
|
|||
test_user_ids = [user.id for user in test_users]
|
||||
|
||||
with (
|
||||
self.assert_database_query_count(18),
|
||||
self.assert_database_query_count(17),
|
||||
self.assert_memcached_count(3),
|
||||
mock.patch("zerver.views.streams.send_messages_for_new_subscribers"),
|
||||
):
|
||||
|
@ -5641,7 +5641,7 @@ class SubscriptionAPITest(ZulipTestCase):
|
|||
]
|
||||
|
||||
# Test creating a public stream when realm does not have a notification stream.
|
||||
with self.assert_database_query_count(40):
|
||||
with self.assert_database_query_count(39):
|
||||
self.common_subscribe_to_streams(
|
||||
self.test_user,
|
||||
[new_streams[0]],
|
||||
|
@ -5661,7 +5661,7 @@ class SubscriptionAPITest(ZulipTestCase):
|
|||
new_stream_announcements_stream = get_stream(self.streams[0], self.test_realm)
|
||||
self.test_realm.new_stream_announcements_stream_id = new_stream_announcements_stream.id
|
||||
self.test_realm.save()
|
||||
with self.assert_database_query_count(51):
|
||||
with self.assert_database_query_count(50):
|
||||
self.common_subscribe_to_streams(
|
||||
self.test_user,
|
||||
[new_streams[2]],
|
||||
|
|
Loading…
Reference in New Issue