mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 22:13:26 +00:00
Simplify and "fix" render_old_messages management command.
The command to render old messages now looks for all messages not matching the bugdown version, and it no longer directly calls into model code. We should still be extremely cautious about using this code.
This commit is contained in:
@@ -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()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user