refactor: Rename bugdown to markdown in message.py and test_messages.py.

This commit is part of series of commits aimed at renaming bugdown to
markdown.
This commit is contained in:
Mohit Gupta
2020-06-28 06:12:57 +05:30
committed by Tim Abbott
parent e13691aa10
commit 0552936c9b
2 changed files with 23 additions and 19 deletions

View File

@@ -13,7 +13,6 @@ from psycopg2.sql import SQL
from typing_extensions import TypedDict
from analytics.lib.counts import COUNT_STATS, RealmCount
from zerver.lib import markdown as bugdown
from zerver.lib.avatar import get_avatar_field
from zerver.lib.cache import (
cache_with_key,
@@ -26,6 +25,10 @@ from zerver.lib.display_recipient import (
UserDisplayRecipient,
bulk_fetch_display_recipients,
)
from zerver.lib.markdown import MentionData
from zerver.lib.markdown import convert as markdown_convert
from zerver.lib.markdown import topic_links
from zerver.lib.markdown import version as markdown_version
from zerver.lib.request import JsonableError
from zerver.lib.stream_subscription import get_stream_subscriptions_for_user
from zerver.lib.timestamp import datetime_to_timestamp
@@ -165,7 +168,7 @@ def message_to_dict_json(message: Message, realm_id: Optional[int]=None) -> byte
def save_message_rendered_content(message: Message, content: str) -> str:
rendered_content = render_markdown(message, content, realm=message.get_realm())
message.rendered_content = rendered_content
message.rendered_content_version = bugdown.version
message.rendered_content_version = markdown_version
message.save_rendered_content()
return rendered_content
@@ -389,24 +392,24 @@ class MessageDict:
# Render topic_links with the stream's realm instead of the
# sender's realm; this is important for messages sent by
# cross-realm bots like NOTIFICATION_BOT.
obj[TOPIC_LINKS] = bugdown.topic_links(rendering_realm_id, topic_name)
obj[TOPIC_LINKS] = topic_links(rendering_realm_id, topic_name)
if last_edit_time is not None:
obj['last_edit_timestamp'] = datetime_to_timestamp(last_edit_time)
assert edit_history is not None
obj['edit_history'] = ujson.loads(edit_history)
if Message.need_to_render_content(rendered_content, rendered_content_version, bugdown.version):
if Message.need_to_render_content(rendered_content, rendered_content_version, markdown_version):
# We really shouldn't be rendering objects in this method, but there is
# a scenario where we upgrade the version of bugdown and fail to run
# a scenario where we upgrade the version of markdown and fail to run
# management commands to re-render historical messages, and then we
# need to have side effects. This method is optimized to not need full
# blown ORM objects, but the bugdown renderer is unfortunately highly
# blown ORM objects, but the markdown renderer is unfortunately highly
# coupled to Message, and we also need to persist the new rendered content.
# If we don't have a message object passed in, we get one here. The cost
# of going to the DB here should be overshadowed by the cost of rendering
# and updating the row.
# TODO: see #1379 to eliminate bugdown dependencies
# TODO: see #1379 to eliminate markdown dependencies
message = Message.objects.select_related().get(id=message_id)
assert message is not None # Hint for mypy.
@@ -658,7 +661,7 @@ def render_markdown(message: Message,
content: str,
realm: Optional[Realm]=None,
realm_alert_words_automaton: Optional[ahocorasick.Automaton]=None,
mention_data: Optional[bugdown.MentionData]=None,
mention_data: Optional[MentionData]=None,
email_gateway: bool=False) -> str:
'''
This is basically just a wrapper for do_render_markdown.
@@ -690,9 +693,9 @@ def do_render_markdown(message: Message,
sent_by_bot: bool,
translate_emoticons: bool,
realm_alert_words_automaton: Optional[ahocorasick.Automaton]=None,
mention_data: Optional[bugdown.MentionData]=None,
mention_data: Optional[MentionData]=None,
email_gateway: bool=False) -> str:
"""Return HTML for given markdown. Bugdown may add properties to the
"""Return HTML for given markdown. Markdown may add properties to the
message object such as `mentions_user_ids`, `mentions_user_group_ids`, and
`mentions_wildcard`. These are only on this Django object and are not
saved in the database.
@@ -705,8 +708,8 @@ def do_render_markdown(message: Message,
message.links_for_preview = set()
message.user_ids_with_alert_words = set()
# DO MAIN WORK HERE -- call bugdown to convert
rendered_content = bugdown.convert(
# DO MAIN WORK HERE -- call markdown to convert
rendered_content = markdown_convert(
content,
realm_alert_words_automaton=realm_alert_words_automaton,
message=message,

View File

@@ -16,7 +16,6 @@ from django.utils.timezone import now as timezone_now
from analytics.lib.counts import COUNT_STATS
from analytics.models import RealmCount
from zerver.decorator import JsonableError
from zerver.lib import markdown as bugdown
from zerver.lib.actions import (
check_message,
check_send_stream_message,
@@ -50,6 +49,8 @@ from zerver.lib.actions import (
from zerver.lib.addressee import Addressee
from zerver.lib.cache import cache_delete, get_stream_cache_key, to_dict_cache_key_id
from zerver.lib.create_user import create_user_profile
from zerver.lib.markdown import MentionData
from zerver.lib.markdown import version as markdown_version
from zerver.lib.message import (
MessageDict,
bulk_access_messages,
@@ -1383,7 +1384,7 @@ class MessageDictTest(ZulipTestCase):
recipient=recipient,
content=f'whatever {i}',
rendered_content='DOES NOT MATTER',
rendered_content_version=bugdown.version,
rendered_content_version=markdown_version,
date_sent=timezone_now(),
sending_client=sending_client,
last_edit_time=timezone_now(),
@@ -1445,9 +1446,9 @@ class MessageDictTest(ZulipTestCase):
self.assertEqual(dct['rendered_content'], expected_content)
message = Message.objects.get(id=message.id)
self.assertEqual(message.rendered_content, expected_content)
self.assertEqual(message.rendered_content_version, bugdown.version)
self.assertEqual(message.rendered_content_version, markdown_version)
@mock.patch("zerver.lib.message.bugdown.convert")
@mock.patch("zerver.lib.message.markdown_convert")
def test_applying_markdown_invalid_format(self, convert_mock: Any) -> None:
# pretend the converter returned an invalid message without raising an exception
convert_mock.return_value = None
@@ -4218,7 +4219,7 @@ class MessageHasKeywordsTest(ZulipTestCase):
self.assertEqual(attachment.is_claimed(), claimed)
# This message should claim attachments 1 only because attachment 2
# is not being parsed as a link by Bugdown.
# is not being parsed as a link by Markdown.
body = ("Some files here ...[zulip.txt]({})" +
"{}.... Some more...." +
"{}").format(dummy_urls[0], dummy_urls[1], dummy_urls[1])
@@ -4227,7 +4228,7 @@ class MessageHasKeywordsTest(ZulipTestCase):
assert_attachment_claimed(dummy_path_ids[1], False)
# This message tries to claim the third attachment but fails because
# Bugdown would not set has_attachments = True here.
# Markdown would not set has_attachments = True here.
body = f"Link in code: `{dummy_urls[2]}`"
self.send_stream_message(user_profile, "Denmark", body, "test")
assert_attachment_claimed(dummy_path_ids[2], False)
@@ -4265,7 +4266,7 @@ class MessageHasKeywordsTest(ZulipTestCase):
hamlet = self.example_user('hamlet')
realm_id = hamlet.realm.id
rendered_content = render_markdown(msg, content)
mention_data = bugdown.MentionData(realm_id, content)
mention_data = MentionData(realm_id, content)
do_update_message(hamlet, msg, None, None, "change_one", False, False, content,
rendered_content, set(), set(), mention_data=mention_data)