mirror of https://github.com/zulip/zulip.git
data_import: Add migration status file to converted exports.
This commit updates all third-party importer tools (Slack, Mattermost, and Rocket Chat) in the `zerver/data_import` directory to also output a migration_status.json file in their output tarball. This is required because all importable tarball will be checked for migration compatibility during import. Fixes #28443.
This commit is contained in:
parent
a9838d8089
commit
0d7199b22e
|
@ -40,6 +40,7 @@ from zerver.data_import.import_util import (
|
||||||
from zerver.data_import.sequencer import NEXT_ID, IdMapper
|
from zerver.data_import.sequencer import NEXT_ID, IdMapper
|
||||||
from zerver.data_import.user_handler import UserHandler
|
from zerver.data_import.user_handler import UserHandler
|
||||||
from zerver.lib.emoji import name_to_codepoint
|
from zerver.lib.emoji import name_to_codepoint
|
||||||
|
from zerver.lib.export import do_common_export_processes
|
||||||
from zerver.lib.markdown import IMAGE_EXTENSIONS
|
from zerver.lib.markdown import IMAGE_EXTENSIONS
|
||||||
from zerver.lib.upload import sanitize_name
|
from zerver.lib.upload import sanitize_name
|
||||||
from zerver.lib.utils import process_list_in_batches
|
from zerver.lib.utils import process_list_in_batches
|
||||||
|
@ -1013,3 +1014,5 @@ def do_convert_data(mattermost_data_dir: str, output_dir: str, masking_content:
|
||||||
attachment: dict[str, list[Any]] = {"zerver_attachment": zerver_attachment}
|
attachment: dict[str, list[Any]] = {"zerver_attachment": zerver_attachment}
|
||||||
create_converted_data_files(uploads_list, realm_output_dir, "/uploads/records.json")
|
create_converted_data_files(uploads_list, realm_output_dir, "/uploads/records.json")
|
||||||
create_converted_data_files(attachment, realm_output_dir, "/attachment.json")
|
create_converted_data_files(attachment, realm_output_dir, "/attachment.json")
|
||||||
|
|
||||||
|
do_common_export_processes(realm_output_dir)
|
||||||
|
|
|
@ -31,6 +31,7 @@ from zerver.data_import.import_util import (
|
||||||
from zerver.data_import.sequencer import NEXT_ID, IdMapper
|
from zerver.data_import.sequencer import NEXT_ID, IdMapper
|
||||||
from zerver.data_import.user_handler import UserHandler
|
from zerver.data_import.user_handler import UserHandler
|
||||||
from zerver.lib.emoji import name_to_codepoint
|
from zerver.lib.emoji import name_to_codepoint
|
||||||
|
from zerver.lib.export import do_common_export_processes
|
||||||
from zerver.lib.markdown import IMAGE_EXTENSIONS
|
from zerver.lib.markdown import IMAGE_EXTENSIONS
|
||||||
from zerver.lib.upload import sanitize_name
|
from zerver.lib.upload import sanitize_name
|
||||||
from zerver.lib.utils import process_list_in_batches
|
from zerver.lib.utils import process_list_in_batches
|
||||||
|
@ -1291,3 +1292,5 @@ def do_convert_data(rocketchat_data_dir: str, output_dir: str) -> None:
|
||||||
attachment: dict[str, list[Any]] = {"zerver_attachment": zerver_attachment}
|
attachment: dict[str, list[Any]] = {"zerver_attachment": zerver_attachment}
|
||||||
create_converted_data_files(attachment, output_dir, "/attachment.json")
|
create_converted_data_files(attachment, output_dir, "/attachment.json")
|
||||||
create_converted_data_files(uploads_list, output_dir, "/uploads/records.json")
|
create_converted_data_files(uploads_list, output_dir, "/uploads/records.json")
|
||||||
|
|
||||||
|
do_common_export_processes(output_dir)
|
||||||
|
|
|
@ -47,7 +47,7 @@ from zerver.data_import.slack_message_conversion import (
|
||||||
get_user_full_name,
|
get_user_full_name,
|
||||||
)
|
)
|
||||||
from zerver.lib.emoji import codepoint_to_name, get_emoji_file_name
|
from zerver.lib.emoji import codepoint_to_name, get_emoji_file_name
|
||||||
from zerver.lib.export import MESSAGE_BATCH_CHUNK_SIZE
|
from zerver.lib.export import MESSAGE_BATCH_CHUNK_SIZE, do_common_export_processes
|
||||||
from zerver.lib.mime_types import guess_type
|
from zerver.lib.mime_types import guess_type
|
||||||
from zerver.lib.storage import static_path
|
from zerver.lib.storage import static_path
|
||||||
from zerver.lib.thumbnail import resize_realm_icon
|
from zerver.lib.thumbnail import resize_realm_icon
|
||||||
|
@ -1508,6 +1508,7 @@ def do_convert_directory(
|
||||||
create_converted_data_files(uploads_records, output_dir, "/uploads/records.json")
|
create_converted_data_files(uploads_records, output_dir, "/uploads/records.json")
|
||||||
create_converted_data_files(attachment, output_dir, "/attachment.json")
|
create_converted_data_files(attachment, output_dir, "/attachment.json")
|
||||||
create_converted_data_files(realm_icon_records, output_dir, "/realm_icons/records.json")
|
create_converted_data_files(realm_icon_records, output_dir, "/realm_icons/records.json")
|
||||||
|
do_common_export_processes(output_dir)
|
||||||
|
|
||||||
logging.info("######### DATA CONVERSION FINISHED #########\n")
|
logging.info("######### DATA CONVERSION FINISHED #########\n")
|
||||||
logging.info("Zulip data dump created at %s", output_dir)
|
logging.info("Zulip data dump created at %s", output_dir)
|
||||||
|
|
|
@ -698,6 +698,9 @@ class MatterMostImporter(ZulipTestCase):
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
os.path.exists(os.path.join(harry_team_output_dir, "attachment.json")), True
|
os.path.exists(os.path.join(harry_team_output_dir, "attachment.json")), True
|
||||||
)
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
os.path.exists(os.path.join(harry_team_output_dir, "migration_status.json")), True
|
||||||
|
)
|
||||||
|
|
||||||
realm = self.read_file(harry_team_output_dir, "realm.json")
|
realm = self.read_file(harry_team_output_dir, "realm.json")
|
||||||
|
|
||||||
|
|
|
@ -912,6 +912,7 @@ class RocketChatImporter(ZulipTestCase):
|
||||||
"INFO:root:Done processing emoji",
|
"INFO:root:Done processing emoji",
|
||||||
"INFO:root:Direct message group channel found. UIDs: ['LdBZ7kPxtKESyHPEe', 'M2sXGqoQRJQwQoXY2', 'os6N2Xg2JkNMCSW9Z']",
|
"INFO:root:Direct message group channel found. UIDs: ['LdBZ7kPxtKESyHPEe', 'M2sXGqoQRJQwQoXY2', 'os6N2Xg2JkNMCSW9Z']",
|
||||||
"INFO:root:skipping direct messages discussion mention: Discussion with Hermione",
|
"INFO:root:skipping direct messages discussion mention: Discussion with Hermione",
|
||||||
|
"INFO:root:Exporting migration status",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -919,6 +920,7 @@ class RocketChatImporter(ZulipTestCase):
|
||||||
self.assertEqual(os.path.exists(os.path.join(output_dir, "emoji")), True)
|
self.assertEqual(os.path.exists(os.path.join(output_dir, "emoji")), True)
|
||||||
self.assertEqual(os.path.exists(os.path.join(output_dir, "uploads")), True)
|
self.assertEqual(os.path.exists(os.path.join(output_dir, "uploads")), True)
|
||||||
self.assertEqual(os.path.exists(os.path.join(output_dir, "attachment.json")), True)
|
self.assertEqual(os.path.exists(os.path.join(output_dir, "attachment.json")), True)
|
||||||
|
self.assertTrue(os.path.exists(output_dir + "/migration_status.json"))
|
||||||
|
|
||||||
realm = self.read_file(output_dir, "realm.json")
|
realm = self.read_file(output_dir, "realm.json")
|
||||||
|
|
||||||
|
|
|
@ -1337,6 +1337,7 @@ class SlackImporter(ZulipTestCase):
|
||||||
|
|
||||||
self.assertTrue(os.path.exists(output_dir))
|
self.assertTrue(os.path.exists(output_dir))
|
||||||
self.assertTrue(os.path.exists(output_dir + "/realm.json"))
|
self.assertTrue(os.path.exists(output_dir + "/realm.json"))
|
||||||
|
self.assertTrue(os.path.exists(output_dir + "/migration_status.json"))
|
||||||
|
|
||||||
realm_icons_path = os.path.join(output_dir, "realm_icons")
|
realm_icons_path = os.path.join(output_dir, "realm_icons")
|
||||||
realm_icon_records_path = os.path.join(realm_icons_path, "records.json")
|
realm_icon_records_path = os.path.join(realm_icons_path, "records.json")
|
||||||
|
|
Loading…
Reference in New Issue