mirror of
https://github.com/zulip/zulip.git
synced 2025-10-23 04:52:12 +00:00
import_data: Make sure converted DMs don't have topic name.
Previously, `build_message` sets a message's topic name to the given topic name, regardless of whether the message was a direct message (DM) or a group direct message (GDM). This change adds the `is_private` parameter to `build_message`. If `is_private` is `True`, the `topic_name` will be overridden to an empty string (""). Consequently, this also updates the third-party importers to pass this parameter when calling `build_message`. Co-authored-by: Pieter CK <pieterceka123@gmail.com>
This commit is contained in:
committed by
Tim Abbott
parent
7d3b77e490
commit
845f0d40e1
@@ -487,7 +487,7 @@ def build_direct_message_group(direct_message_group_id: int, group_size: int) ->
|
||||
|
||||
def build_message(
|
||||
*,
|
||||
topic_name: str,
|
||||
topic_name: str = "",
|
||||
date_sent: float,
|
||||
message_id: int,
|
||||
content: str,
|
||||
@@ -499,6 +499,7 @@ def build_message(
|
||||
has_image: bool = False,
|
||||
has_link: bool = False,
|
||||
has_attachment: bool = True,
|
||||
is_direct_message_type: bool,
|
||||
) -> ZerverFieldsT:
|
||||
# check and remove NULL Bytes if any.
|
||||
content = normalize_body_for_import(content)
|
||||
@@ -512,6 +513,8 @@ def build_message(
|
||||
has_attachment=has_attachment,
|
||||
has_link=has_link,
|
||||
)
|
||||
if is_direct_message_type:
|
||||
topic_name = ""
|
||||
zulip_message.set_topic_name(topic_name)
|
||||
zulip_message_dict = model_to_dict(
|
||||
zulip_message, exclude=["recipient", "sender", "sending_client"]
|
||||
|
@@ -445,12 +445,15 @@ def process_raw_message_batch(
|
||||
date_sent = raw_message["date_sent"]
|
||||
sender_user_id = raw_message["sender_id"]
|
||||
if "channel_name" in raw_message:
|
||||
is_direct_message_type = False
|
||||
recipient_id = get_recipient_id_from_channel_name(raw_message["channel_name"])
|
||||
elif "direct_message_group_members" in raw_message:
|
||||
is_direct_message_type = True
|
||||
recipient_id = get_recipient_id_from_direct_message_group_members(
|
||||
raw_message["direct_message_group_members"]
|
||||
)
|
||||
elif "pm_members" in raw_message:
|
||||
is_direct_message_type = True
|
||||
members = raw_message["pm_members"]
|
||||
member_ids = {user_id_mapper.get(member) for member in members}
|
||||
pm_members[message_id] = member_ids
|
||||
@@ -501,6 +504,7 @@ def process_raw_message_batch(
|
||||
has_image=has_image,
|
||||
has_link=has_link,
|
||||
has_attachment=has_attachment,
|
||||
is_direct_message_type=is_direct_message_type,
|
||||
)
|
||||
zerver_message.append(message)
|
||||
build_reactions(
|
||||
|
@@ -552,6 +552,7 @@ def process_raw_message_batch(
|
||||
has_image=has_image,
|
||||
has_link=has_link,
|
||||
has_attachment=has_attachment,
|
||||
is_direct_message_type=is_pm_data,
|
||||
)
|
||||
zerver_message.append(message)
|
||||
build_reactions(
|
||||
|
@@ -943,13 +943,13 @@ def channel_message_to_zerver_message(
|
||||
rendered_content = None
|
||||
|
||||
if "channel_name" in message:
|
||||
is_private = False
|
||||
is_direct_message_type = False
|
||||
recipient_id = slack_recipient_name_to_zulip_recipient_id[message["channel_name"]]
|
||||
elif "mpim_name" in message:
|
||||
is_private = True
|
||||
is_direct_message_type = True
|
||||
recipient_id = slack_recipient_name_to_zulip_recipient_id[message["mpim_name"]]
|
||||
elif "pm_name" in message:
|
||||
is_private = True
|
||||
is_direct_message_type = True
|
||||
sender = get_message_sending_user(message)
|
||||
members = dm_members[message["pm_name"]]
|
||||
if sender == members[0]:
|
||||
@@ -1019,6 +1019,9 @@ def channel_message_to_zerver_message(
|
||||
topic_name = f"{thread_date} Slack thread {count}"
|
||||
thread_map[thread_ts_str] = topic_name
|
||||
|
||||
if is_direct_message_type:
|
||||
topic_name = ""
|
||||
|
||||
zulip_message = build_message(
|
||||
topic_name=topic_name,
|
||||
date_sent=get_timestamp_from_message(message),
|
||||
@@ -1028,10 +1031,11 @@ def channel_message_to_zerver_message(
|
||||
user_id=slack_user_id_to_zulip_user_id[slack_user_id],
|
||||
recipient_id=recipient_id,
|
||||
realm_id=realm_id,
|
||||
is_channel_message=not is_private,
|
||||
is_channel_message=not is_direct_message_type,
|
||||
has_image=has_image,
|
||||
has_link=has_link,
|
||||
has_attachment=has_attachment,
|
||||
is_direct_message_type=is_direct_message_type,
|
||||
)
|
||||
zerver_message.append(zulip_message)
|
||||
|
||||
@@ -1041,7 +1045,7 @@ def channel_message_to_zerver_message(
|
||||
recipient_id=recipient_id,
|
||||
mentioned_user_ids=mentioned_user_ids,
|
||||
message_id=message_id,
|
||||
is_private=is_private,
|
||||
is_private=is_direct_message_type,
|
||||
long_term_idle=long_term_idle,
|
||||
)
|
||||
total_user_messages += num_created
|
||||
@@ -1054,7 +1058,7 @@ def channel_message_to_zerver_message(
|
||||
recipient_id=sender_recipient_id,
|
||||
mentioned_user_ids=mentioned_user_ids,
|
||||
message_id=message_id,
|
||||
is_private=is_private,
|
||||
is_private=is_direct_message_type,
|
||||
long_term_idle=long_term_idle,
|
||||
)
|
||||
total_user_messages += num_created
|
||||
|
@@ -902,6 +902,7 @@ class MatterMostImporter(ZulipTestCase):
|
||||
self.assertEqual(
|
||||
group_direct_messages[0].content, "Who is going to Hogsmeade this weekend?\n\n"
|
||||
)
|
||||
self.assertEqual(group_direct_messages[0].topic_name(), "")
|
||||
|
||||
personal_messages = messages.filter(recipient__type=Recipient.PERSONAL).order_by(
|
||||
"date_sent"
|
||||
@@ -914,6 +915,7 @@ class MatterMostImporter(ZulipTestCase):
|
||||
self.assertTrue(personal_messages[0].has_attachment)
|
||||
self.assertTrue(personal_messages[0].has_image)
|
||||
self.assertTrue(personal_messages[0].has_link)
|
||||
self.assertEqual(personal_messages[0].topic_name(), "")
|
||||
|
||||
def test_do_convert_data_with_masking(self) -> None:
|
||||
mattermost_data_dir = self.fixture_file_name("", "mattermost_fixtures")
|
||||
|
@@ -1055,6 +1055,7 @@ class RocketChatImporter(ZulipTestCase):
|
||||
self.assertEqual(group_direct_messages[0].sender.email, "hermionegranger@email.com")
|
||||
self.assertEqual(group_direct_messages[0].content, "Hey people!")
|
||||
|
||||
self.assertEqual(group_direct_messages[0].topic_name(), "")
|
||||
self.assertEqual(group_direct_messages[2].sender.email, "harrypotter@email.com")
|
||||
self.assertRegex(
|
||||
group_direct_messages[2].content,
|
||||
@@ -1075,6 +1076,7 @@ class RocketChatImporter(ZulipTestCase):
|
||||
personal_messages[0].content,
|
||||
"Hey @**Hermione Granger** :grin:, how's everything going?",
|
||||
)
|
||||
self.assertEqual(personal_messages[0].topic_name(), "")
|
||||
|
||||
self.verify_emoji_code_foreign_keys()
|
||||
|
||||
|
@@ -1274,6 +1274,11 @@ class SlackImporter(ZulipTestCase):
|
||||
self.assertEqual(zerver_message[5]["has_link"], False)
|
||||
self.assertEqual(zerver_message[7]["has_link"], False)
|
||||
|
||||
# Test that topic_name is an empty string for direct messages and
|
||||
# group direct messages.
|
||||
self.assertEqual(zerver_message[6][EXPORT_TOPIC_NAME], "")
|
||||
self.assertEqual(zerver_message[8][EXPORT_TOPIC_NAME], "")
|
||||
|
||||
self.assertEqual(zerver_message[3][EXPORT_TOPIC_NAME], "imported from Slack")
|
||||
self.assertEqual(zerver_message[3]["content"], "/me added bot")
|
||||
self.assertEqual(
|
||||
|
Reference in New Issue
Block a user