import script: Fix upload links.

Rendered content is None for Slack imports, hence it is replaced only
for Zulip->Zulip imports.

Fixes #8959.
This commit is contained in:
Rhea Parekh
2018-04-07 13:54:22 +05:30
committed by Tim Abbott
parent b3f951d2cf
commit e037c2f93e

View File

@@ -1255,9 +1255,8 @@ def fix_datetime_fields(data: TableData, table: TableName) -> None:
if item[field_name] is not None:
item[field_name] = datetime.datetime.fromtimestamp(item[field_name], tz=timezone_utc)
def fix_slack_upload_links(data: TableData, message_table: TableName) -> None:
"""This is slack importer specific for now, though arguably it shouldn't be.
def fix_upload_links(data: TableData, message_table: TableName) -> None:
"""
Because the URLs for uploaded files encode the realm ID of the
organization being imported (which is only determined at import
time), we need to rewrite the URLs of links to uploaded files
@@ -1265,15 +1264,11 @@ def fix_slack_upload_links(data: TableData, message_table: TableName) -> None:
"""
for message in data[message_table]:
if message['has_attachment'] is True:
# This code path needs to be kept in sync with the
# specific placeholder 'SlackImportAttachment' in the
# Slack import attachment code path. See the function
# 'get_attachment_path_and_content' in the
# 'slack_data_to_zulip_data' module.
if 'SlackImportAttachment' in message['content']:
for key, value in path_maps['attachment_path'].items():
if key in message['content']:
message['content'] = message['content'].replace(key, value)
for key, value in path_maps['attachment_path'].items():
if key in message['content']:
message['content'] = message['content'].replace(key, value)
if message['rendered_content']:
message['rendered_content'] = message['rendered_content'].replace(key, value)
def current_table_ids(data: TableData, table: TableName) -> List[int]:
"""
@@ -1761,7 +1756,7 @@ def import_message_data(import_dir: Path) -> None:
re_map_foreign_keys(data, 'zerver_message', 'sending_client', related_table='client')
fix_datetime_fields(data, 'zerver_message')
# Parser to update message content with the updated attachment urls
fix_slack_upload_links(data, 'zerver_message')
fix_upload_links(data, 'zerver_message')
re_map_foreign_keys(data, 'zerver_message', 'id', related_table='message', id_field=True)
bulk_import_model(data, Message, 'zerver_message')