mirror of
https://github.com/zulip/zulip.git
synced 2025-11-13 10:26:28 +00:00
rocketchat: Truncate long stream names.
These will lead to an error during import otherwise. Signed-off-by: Florian Pritz <bluewind@xinu.at>
This commit is contained in:
committed by
Tim Abbott
parent
3a27919b5b
commit
26fe028534
@@ -135,11 +135,22 @@ def process_users(
|
|||||||
bot_user["bot_owner"] = realm_owners[0]
|
bot_user["bot_owner"] = realm_owners[0]
|
||||||
|
|
||||||
|
|
||||||
|
def truncate_name(name: str, name_id: int, max_length: int = 60) -> str:
|
||||||
|
if len(name) > max_length:
|
||||||
|
name_id_suffix = f" [{name_id}]"
|
||||||
|
name = name[0 : max_length - len(name_id_suffix)] + name_id_suffix
|
||||||
|
return name
|
||||||
|
|
||||||
|
|
||||||
def get_stream_name(rc_channel: Dict[str, Any]) -> str:
|
def get_stream_name(rc_channel: Dict[str, Any]) -> str:
|
||||||
if rc_channel.get("teamMain"):
|
if rc_channel.get("teamMain"):
|
||||||
return f'[TEAM] {rc_channel["name"]}'
|
stream_name = f'[TEAM] {rc_channel["name"]}'
|
||||||
else:
|
else:
|
||||||
return rc_channel["name"]
|
stream_name = rc_channel["name"]
|
||||||
|
|
||||||
|
stream_name = truncate_name(stream_name, rc_channel["_id"])
|
||||||
|
|
||||||
|
return stream_name
|
||||||
|
|
||||||
|
|
||||||
def convert_channel_data(
|
def convert_channel_data(
|
||||||
@@ -575,15 +586,15 @@ def get_topic_name(
|
|||||||
return ""
|
return ""
|
||||||
elif message["rid"] in dsc_id_to_dsc_map:
|
elif message["rid"] in dsc_id_to_dsc_map:
|
||||||
dsc_channel_name = dsc_id_to_dsc_map[message["rid"]]["fname"]
|
dsc_channel_name = dsc_id_to_dsc_map[message["rid"]]["fname"]
|
||||||
return f"{dsc_channel_name} (Imported from Rocket.Chat)"
|
return truncate_name(f"{dsc_channel_name} (Imported from Rocket.Chat)", message["rid"])
|
||||||
elif message.get("replies"):
|
elif message.get("replies"):
|
||||||
# Message is the start of a thread
|
# Message is the start of a thread
|
||||||
thread_id = thread_id_mapper.get(message["_id"])
|
thread_id = thread_id_mapper.get(message["_id"])
|
||||||
return f"Thread {thread_id} (Imported from Rocket.Chat)"
|
return truncate_name(f"Thread {thread_id} (Imported from Rocket.Chat)", message["_id"])
|
||||||
elif message.get("tmid"):
|
elif message.get("tmid"):
|
||||||
# Message is a part of a thread
|
# Message is a part of a thread
|
||||||
thread_id = thread_id_mapper.get(message["tmid"])
|
thread_id = thread_id_mapper.get(message["tmid"])
|
||||||
return f"Thread {thread_id} (Imported from Rocket.Chat)"
|
return truncate_name(f"Thread {thread_id} (Imported from Rocket.Chat)", message["tmid"])
|
||||||
else:
|
else:
|
||||||
# Normal channel message
|
# Normal channel message
|
||||||
return "Imported from Rocket.Chat"
|
return "Imported from Rocket.Chat"
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ from zerver.data_import.rocketchat import (
|
|||||||
process_users,
|
process_users,
|
||||||
rocketchat_data_to_dict,
|
rocketchat_data_to_dict,
|
||||||
separate_channel_private_and_livechat_messages,
|
separate_channel_private_and_livechat_messages,
|
||||||
|
truncate_name,
|
||||||
)
|
)
|
||||||
from zerver.data_import.sequencer import IdMapper
|
from zerver.data_import.sequencer import IdMapper
|
||||||
from zerver.data_import.user_handler import UserHandler
|
from zerver.data_import.user_handler import UserHandler
|
||||||
@@ -1031,3 +1032,8 @@ class RocketChatImporter(ZulipTestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
self.verify_emoji_code_foreign_keys()
|
self.verify_emoji_code_foreign_keys()
|
||||||
|
|
||||||
|
def test_truncate_name(self) -> None:
|
||||||
|
self.assertEqual("foobar", truncate_name("foobar", 42, 60))
|
||||||
|
|
||||||
|
self.assertEqual("1234567890 [42]", truncate_name("12345678901234567890", 42, 15))
|
||||||
|
|||||||
Reference in New Issue
Block a user