Pass in sent_by_bot flag to bugdown parser.

We will use this flag to suppress certain url previews
for bots.
This commit is contained in:
Steve Howell
2017-02-03 14:21:56 -08:00
committed by Tim Abbott
parent 4abb6724d0
commit 709493cd75
2 changed files with 16 additions and 6 deletions

View File

@@ -1293,8 +1293,8 @@ def log_bugdown_error(msg):
could cause an infinite exception loop."""
logging.getLogger('').error(msg)
def do_convert(content, message=None, message_realm=None, possible_words=None):
# type: (Text, Optional[Message], Optional[Realm], Optional[Set[Text]]) -> Optional[Text]
def do_convert(content, message=None, message_realm=None, possible_words=None, sent_by_bot=False):
# type: (Text, Optional[Message], Optional[Realm], Optional[Set[Text]], Optional[bool]) -> Optional[Text]
"""Convert Markdown to HTML, with Zulip-specific settings and hacks."""
from zerver.models import get_active_user_dicts_in_realm, get_active_streams, UserProfile
@@ -1344,6 +1344,7 @@ def do_convert(content, message=None, message_realm=None, possible_words=None):
'full_names': dict((user['full_name'].lower(), user) for user in realm_users),
'short_names': dict((user['short_name'].lower(), user) for user in realm_users),
'emoji': message_realm.get_emoji(),
'sent_by_bot': sent_by_bot,
'stream_names': dict((stream['name'], stream) for stream in realm_streams)}
try:
@@ -1398,9 +1399,9 @@ def bugdown_stats_finish():
bugdown_total_requests += 1
bugdown_total_time += (time.time() - bugdown_time_start)
def convert(content, message=None, message_realm=None, possible_words=None):
# type: (Text, Optional[Message], Optional[Realm], Optional[Set[Text]]) -> Optional[Text]
def convert(content, message=None, message_realm=None, possible_words=None, sent_by_bot=False):
# type: (Text, Optional[Message], Optional[Realm], Optional[Set[Text]], Optional[bool]) -> Optional[Text]
bugdown_stats_start()
ret = do_convert(content, message, message_realm, possible_words)
ret = do_convert(content, message, message_realm, possible_words, sent_by_bot)
bugdown_stats_finish()
return ret

View File

@@ -19,6 +19,7 @@ from zerver.lib.timestamp import datetime_to_timestamp
from zerver.models import (
get_display_recipient_by_id,
get_user_profile_by_id,
Message,
Realm,
Recipient,
@@ -329,9 +330,17 @@ def render_markdown(message, content, realm=None, realm_alert_words=None, messag
if user_id in message_user_ids:
possible_words.update(set(words))
if message is None:
# If we don't have a message, then we are in the compose preview
# codepath, so we know we are dealing with a human.
sent_by_bot = False
else:
sent_by_bot = get_user_profile_by_id(message.sender_id).is_bot
# DO MAIN WORK HERE -- call bugdown to convert
rendered_content = bugdown.convert(content, message=message, message_realm=realm,
possible_words=possible_words)
possible_words=possible_words,
sent_by_bot=sent_by_bot)
if message is not None:
message.user_ids_with_alert_words = set()