diff --git a/zerver/lib/message.py b/zerver/lib/message.py index 01c034040f..42b737cb25 100644 --- a/zerver/lib/message.py +++ b/zerver/lib/message.py @@ -213,3 +213,19 @@ class MessageDict(object): return obj +def re_render_content_for_management_command(message): + # type: (Message) -> None + + ''' + Please avoid using this function, as its only used in a management command that + is somewhat deprecated. + ''' + assert Message.need_to_render_content(message.rendered_content, + message.rendered_content_version, + bugdown.version) + + rendered_content = message.render_markdown(message.content) + message.rendered_content = rendered_content + message.rendered_content_version = bugdown.version + message.save_rendered_content() + diff --git a/zerver/models.py b/zerver/models.py index bbfd280971..a942c7d300 100644 --- a/zerver/models.py +++ b/zerver/models.py @@ -878,22 +878,6 @@ class Message(ModelReprMixin, models.Model): # type: () -> None self.save(update_fields=["rendered_content", "rendered_content_version"]) - def maybe_render_content(self, domain, save = False): - # type: (Optional[text_type], bool) -> bool - """Render the markdown if there is no existing rendered_content""" - # TODO: see #1379 to eliminate bugdown dependencies - global bugdown - if bugdown is None: - import zerver.lib.bugdown as bugdown - # 'from zerver.lib import bugdown' gives mypy error in python 3 mode. - - if Message.need_to_render_content(self.rendered_content, - self.rendered_content_version, - bugdown.version): - return self.set_rendered_content(self.render_markdown(self.content, domain), save) - else: - return True - @staticmethod def need_to_render_content(rendered_content, rendered_content_version, bugdown_version): # type: (Optional[text_type], int, int) -> bool diff --git a/zilencer/management/commands/render_old_messages.py b/zilencer/management/commands/render_old_messages.py index 7a4b15e790..34125a26fc 100644 --- a/zilencer/management/commands/render_old_messages.py +++ b/zilencer/management/commands/render_old_messages.py @@ -5,6 +5,8 @@ from typing import Any from django.core.management.base import BaseCommand +import zerver.lib.bugdown as bugdown +from zerver.lib.message import re_render_content_for_management_command from zerver.models import Message import datetime import time @@ -18,11 +20,11 @@ Usage: python manage.py render_old_messages""" # type: (*Any, **Any) -> None total_rendered = 0 while True: - messages = Message.objects.filter(rendered_content_version=None)[0:100] + messages = Message.objects.exclude(rendered_content_version=bugdown.version)[0:100] if len(messages) == 0: break for message in messages: - message.maybe_render_content(None, save=True) + re_render_content_for_management_command(message) total_rendered += len(messages) print(datetime.datetime.now(), total_rendered) # Put in some sleep so this can run safely on low resource machines