diff --git a/zerver/lib/actions.py b/zerver/lib/actions.py index 4b1bf6250e..02977ce21d 100644 --- a/zerver/lib/actions.py +++ b/zerver/lib/actions.py @@ -255,7 +255,7 @@ def do_send_messages(messages): else: raise ValueError('Bad recipient type') - message['message'].maybe_render_content() + message['message'].maybe_render_content(None) # Save the message receipts in the database user_message_flags = defaultdict(dict) @@ -481,7 +481,7 @@ def check_message(sender, client, message_type_name, message_to, message.pub_date = timezone.now() message.sending_client = client - if not message.maybe_render_content(): + if not message.maybe_render_content(realm.domain): raise JsonableError("Unable to render message") if client.name == "zephyr_mirror": diff --git a/zerver/management/commands/render_old_messages.py b/zerver/management/commands/render_old_messages.py index f2f6a0931e..2f3cbb074e 100644 --- a/zerver/management/commands/render_old_messages.py +++ b/zerver/management/commands/render_old_messages.py @@ -18,7 +18,7 @@ Usage: python manage.py render_old_messages""" if len(messages) == 0: break for message in messages: - message.maybe_render_content(save=True) + message.maybe_render_content(None, save=True) total_rendered += len(messages) print datetime.datetime.now(), total_rendered # Put in some sleep so this can run safely on low resource machines diff --git a/zerver/models.py b/zerver/models.py index 197183998a..0309667132 100644 --- a/zerver/models.py +++ b/zerver/models.py @@ -435,7 +435,7 @@ class Message(models.Model): def get_realm(self): return self.sender.realm - def render_markdown(self, content): + def render_markdown(self, content, domain=None): """Return HTML for given markdown. Bugdown may add properties to the message object such as `mentions_user_ids` and `mentions_wildcard`. These are only on this Django object and are not saved in the @@ -446,7 +446,8 @@ class Message(models.Model): self.mentions_user_ids = set() self.user_ids_with_alert_words = set() - domain = self.sender.realm.domain + if not domain: + domain = self.sender.realm.domain if self.sending_client.name == "zephyr_mirror" and domain == "mit.edu": # Use slightly customized Markdown processor for content # delivered via zephyr_mirror @@ -467,10 +468,10 @@ class Message(models.Model): else: return False - def maybe_render_content(self, save = False): + def maybe_render_content(self, domain, save = False): """Render the markdown if there is no existing rendered_content""" if self.rendered_content_version < bugdown.version or self.rendered_content is None: - return self.set_rendered_content(self.render_markdown(self.content), save) + return self.set_rendered_content(self.render_markdown(self.content, domain), save) else: return True @@ -525,7 +526,7 @@ class Message(models.Model): obj['edit_history'] = ujson.loads(self.edit_history) if apply_markdown: - self.maybe_render_content(save = True) + self.maybe_render_content(None, save = True) if self.rendered_content is not None: obj['content'] = self.rendered_content else: