message_edit: Clarify losing_access_user_ids calculation.

This was previously called delete_event_notify_user_ids, which seemed
to narrow its purpose in a way that was confusing given that it's also
used for other calculations.

Further, calculate it as soon as we know it, not when we're first
going to use it.
This commit is contained in:
Tim Abbott 2023-04-20 17:24:55 -07:00
parent 71e57d2022
commit a03dca93ca
1 changed files with 6 additions and 9 deletions

View File

@ -494,6 +494,7 @@ def do_update_message(
orig_topic_name = target_message.topic_name()
event["propagate_mode"] = propagate_mode
losing_access_user_ids: List[int] = []
if new_stream is not None:
assert content is None
assert target_message.is_stream_message()
@ -538,6 +539,8 @@ def do_update_message(
for sub in subs_losing_usermessages
if sub.user_profile.is_guest or not new_stream.is_public()
]
losing_access_user_ids = [sub.user_profile_id for sub in subs_losing_access]
ums = ums.exclude(
user_profile_id__in=[sub.user_profile_id for sub in subs_losing_usermessages]
)
@ -586,7 +589,6 @@ def do_update_message(
target_stream.recipient_id, target_topic
).exists()
delete_event_notify_user_ids: List[int] = []
if propagate_mode in ["change_later", "change_all"]:
assert topic_name is not None or new_stream is not None
assert stream_being_edited is not None
@ -654,8 +656,7 @@ def do_update_message(
"stream_id": stream_being_edited.id,
"topic": orig_topic_name,
}
delete_event_notify_user_ids = [sub.user_profile_id for sub in subs_losing_access]
send_event(user_profile.realm, delete_event, delete_event_notify_user_ids)
send_event(user_profile.realm, delete_event, losing_access_user_ids)
# Reset the Attachment.is_*_public caches for all messages
# moved to another stream with different access permissions.
@ -720,8 +721,7 @@ def do_update_message(
)
if new_stream is not None:
assert delete_event_notify_user_ids is not None
subscriptions = subscriptions.exclude(user_profile_id__in=delete_event_notify_user_ids)
subscriptions = subscriptions.exclude(user_profile_id__in=losing_access_user_ids)
# All users that are subscribed to the stream must be
# notified when a message is edited
@ -807,10 +807,7 @@ def do_update_message(
for user_topic in get_users_with_user_topic_visibility_policy(
stream_being_edited.id, orig_topic_name
):
if (
new_stream is not None
and user_topic.user_profile_id in delete_event_notify_user_ids
):
if new_stream is not None and user_topic.user_profile_id in losing_access_user_ids:
stream_inaccessible_to_user_profiles.append(user_topic.user_profile)
else:
orig_topic_user_profile_to_visibility_policy[