def do_render_markdown(message: Message, content: str, realm: Realm, message_user_ids: Set[int], sent_by_bot: bool, translate_emoticons: bool, realm_alert_words_automaton: Optional[ ahocorasick.Automaton] = None, mention_data: Optional[bugdown.MentionData] = None, email_gateway: Optional[bool] = False) -> str: """Return HTML for given markdown. Bugdown 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. """ message.mentions_wildcard = False message.mentions_user_ids = set() message.mentions_user_group_ids = set() message.alert_words = set() message.links_for_preview = set() message.user_ids_with_alert_words = set() # DO MAIN WORK HERE -- call bugdown to convert rendered_content = bugdown.convert( content, realm_alert_words_automaton=realm_alert_words_automaton, message=message, message_realm=realm, sent_by_bot=sent_by_bot, translate_emoticons=translate_emoticons, mention_data=mention_data, email_gateway=email_gateway) return rendered_content
def render_markdown(message: Message, content: Text, realm: Optional[Realm] = None, realm_alert_words: Optional[RealmAlertWords] = None, user_ids: Optional[Set[int]] = None, mention_data: Optional[bugdown.MentionData] = None, email_gateway: Optional[bool] = False) -> Text: """Return HTML for given markdown. Bugdown 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. """ if user_ids is None: message_user_ids = set() # type: Set[int] else: message_user_ids = user_ids if message is not None: message.mentions_wildcard = False message.mentions_user_ids = set() message.mentions_user_group_ids = set() message.alert_words = set() message.links_for_preview = set() if realm is None: realm = message.get_realm() possible_words = set() # type: Set[Text] if realm_alert_words is not None: for user_id, words in realm_alert_words.items(): 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, sent_by_bot=sent_by_bot, mention_data=mention_data, email_gateway=email_gateway) if message is not None: message.user_ids_with_alert_words = set() if realm_alert_words is not None: for user_id, words in realm_alert_words.items(): if user_id in message_user_ids: if set(words).intersection(message.alert_words): message.user_ids_with_alert_words.add(user_id) return rendered_content
def do_render_markdown(message: Message, content: str, realm: Realm, message_user_ids: Set[int], sent_by_bot: bool, translate_emoticons: bool, realm_alert_words_automaton: Optional[ahocorasick.Automaton]=None, mention_data: Optional[bugdown.MentionData]=None, email_gateway: Optional[bool]=False) -> str: """Return HTML for given markdown. Bugdown 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. """ message.mentions_wildcard = False message.mentions_user_ids = set() message.mentions_user_group_ids = set() message.alert_words = set() message.links_for_preview = set() message.user_ids_with_alert_words = set() # DO MAIN WORK HERE -- call bugdown to convert rendered_content = bugdown.convert( content, realm_alert_words_automaton=realm_alert_words_automaton, message=message, message_realm=realm, sent_by_bot=sent_by_bot, translate_emoticons=translate_emoticons, mention_data=mention_data, email_gateway=email_gateway ) return rendered_content
def render_markdown(message: Message, content: str, realm: Optional[Realm]=None, realm_alert_words: Optional[RealmAlertWords]=None, user_ids: Optional[Set[int]]=None, mention_data: Optional[bugdown.MentionData]=None, email_gateway: Optional[bool]=False) -> str: """Return HTML for given markdown. Bugdown 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. """ if user_ids is None: message_user_ids = set() # type: Set[int] else: message_user_ids = user_ids message.mentions_wildcard = False message.mentions_user_ids = set() message.mentions_user_group_ids = set() message.alert_words = set() message.links_for_preview = set() if realm is None: realm = message.get_realm() possible_words = set() # type: Set[str] if realm_alert_words is not None: for user_id, words in realm_alert_words.items(): if user_id in message_user_ids: possible_words.update(set(words)) 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, sent_by_bot=sent_by_bot, mention_data=mention_data, email_gateway=email_gateway ) if message is not None: message.user_ids_with_alert_words = set() if realm_alert_words is not None: for user_id, words in realm_alert_words.items(): if user_id in message_user_ids: if set(words).intersection(message.alert_words): message.user_ids_with_alert_words.add(user_id) return rendered_content
def do_render_markdown(message: Message, content: str, realm: Realm, realm_alert_words: RealmAlertWords, message_user_ids: Set[int], sent_by_bot: bool, translate_emoticons: bool, mention_data: Optional[bugdown.MentionData]=None, email_gateway: Optional[bool]=False) -> str: """Return HTML for given markdown. Bugdown 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. """ message.mentions_wildcard = False message.mentions_user_ids = set() message.mentions_user_group_ids = set() message.alert_words = set() message.links_for_preview = set() possible_words = set() # type: Set[str] for user_id, words in realm_alert_words.items(): if user_id in message_user_ids: possible_words.update(set(words)) # DO MAIN WORK HERE -- call bugdown to convert rendered_content = bugdown.convert( content, message=message, message_realm=realm, possible_words=possible_words, sent_by_bot=sent_by_bot, translate_emoticons=translate_emoticons, mention_data=mention_data, email_gateway=email_gateway ) message.user_ids_with_alert_words = set() for user_id, words in realm_alert_words.items(): if user_id in message_user_ids: if set(words).intersection(message.alert_words): message.user_ids_with_alert_words.add(user_id) return rendered_content