mirror of https://github.com/zulip/zulip.git
import: Inline save_message_rendered_content().
This function requires a message object, whereas we want to work with JSON data to avoid necessary queries when we import data. Inlining the function sets us up for a subsequent refactoring. We change the way we deal with theoretical return values of `None` to use an assertion; otherwise, we would have to loosen up a bunch of mypy types from `str` to `Optional[str]`. It's not clear `None` is even possible--we've moved toward throwing exceptions there instead of silently failing.
This commit is contained in:
parent
6b6001c46c
commit
92a7f04149
|
@ -19,7 +19,7 @@ from zerver.lib.bulk_create import bulk_create_users
|
||||||
from zerver.lib.timestamp import datetime_to_timestamp
|
from zerver.lib.timestamp import datetime_to_timestamp
|
||||||
from zerver.lib.export import DATE_FIELDS, realm_tables, \
|
from zerver.lib.export import DATE_FIELDS, realm_tables, \
|
||||||
Record, TableData, TableName, Field, Path
|
Record, TableData, TableName, Field, Path
|
||||||
from zerver.lib.message import save_message_rendered_content
|
from zerver.lib.message import render_markdown
|
||||||
from zerver.lib.bugdown import version as bugdown_version
|
from zerver.lib.bugdown import version as bugdown_version
|
||||||
from zerver.lib.upload import random_name, sanitize_name, \
|
from zerver.lib.upload import random_name, sanitize_name, \
|
||||||
S3UploadBackend, LocalUploadBackend, guess_type
|
S3UploadBackend, LocalUploadBackend, guess_type
|
||||||
|
@ -219,14 +219,23 @@ def fix_message_rendered_content(data: TableData, field: TableName) -> None:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
try:
|
try:
|
||||||
rendered_content = save_message_rendered_content(message_object, message['content']) # type: Optional[str]
|
content = message['content']
|
||||||
|
realm = message_object.get_realm()
|
||||||
|
rendered_content = render_markdown(
|
||||||
|
message=message_object,
|
||||||
|
content=content,
|
||||||
|
realm=realm,
|
||||||
|
)
|
||||||
|
assert(rendered_content is not None)
|
||||||
|
message_object.rendered_content = rendered_content
|
||||||
|
message_object.rendered_content_version = bugdown_version
|
||||||
|
message_object.save_rendered_content()
|
||||||
except Exception:
|
except Exception:
|
||||||
rendered_content = None
|
# This generally happens with two possible causes:
|
||||||
|
# * rendering markdown throwing an uncaught exception
|
||||||
if rendered_content is None:
|
# * rendering markdown failing with the exception being
|
||||||
# This can happen with two possible causes:
|
# caught in bugdown (which then returns None, causing the the
|
||||||
# * rendering markdown failing with the exception being caught in bugdown
|
# rendered_content assert above to fire).
|
||||||
# * The explicit None clause from an exception escaping
|
|
||||||
logging.warning("Error in markdown rendering for message ID %s; continuing" % (message['id']))
|
logging.warning("Error in markdown rendering for message ID %s; continuing" % (message['id']))
|
||||||
|
|
||||||
def current_table_ids(data: TableData, table: TableName) -> List[int]:
|
def current_table_ids(data: TableData, table: TableName) -> List[int]:
|
||||||
|
|
Loading…
Reference in New Issue