mirror of
https://github.com/zulip/zulip.git
synced 2026-07-12 21:04:41 +08:00
If there is no rendered_content in the database, render it and
save it. This fixes the "Humbug note:" error on old messages that do not have rendered_content in the DB. (imported from commit f4664d712fc40e4af9eb12eae74f37d100499def)
This commit is contained in:
parent
dd53c1fbe3
commit
a7c91bce1b
@ -342,25 +342,24 @@ class Message(models.Model):
|
||||
|
||||
return bugdown.convert(content, self.sender.realm.domain, self)
|
||||
|
||||
def set_rendered_content(self, rendered_content):
|
||||
def set_rendered_content(self, rendered_content, save = False):
|
||||
"""Set the content on the message.
|
||||
|
||||
This method does not call .save(). Save afterwards with
|
||||
update_fields=["rendered_content", "rendered_content_version"].
|
||||
"""
|
||||
|
||||
self.rendered_content = rendered_content
|
||||
self.rendered_content_version = bugdown.version
|
||||
|
||||
if self.rendered_content is None:
|
||||
if self.rendered_content is not None:
|
||||
if save:
|
||||
self.save(update_fields=["rendered_content", "rendered_content_version"])
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def maybe_render_content(self):
|
||||
def maybe_render_content(self, save = False):
|
||||
"""Render the markdown if there is no existing rendered_content"""
|
||||
if self.rendered_content is None:
|
||||
return self.set_rendered_content(self.render_markdown(self.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)
|
||||
else:
|
||||
return True
|
||||
|
||||
@ -409,10 +408,9 @@ class Message(models.Model):
|
||||
if self.last_edit_time != None:
|
||||
obj['last_edit_timestamp'] = datetime_to_timestamp(self.last_edit_time)
|
||||
obj['edit_history'] = ujson.loads(self.edit_history)
|
||||
if apply_markdown and self.rendered_content_version is not None:
|
||||
obj['content'] = self.rendered_content
|
||||
obj['content_type'] = 'text/html'
|
||||
elif apply_markdown:
|
||||
|
||||
if apply_markdown:
|
||||
self.maybe_render_content(save = True)
|
||||
if self.rendered_content is not None:
|
||||
obj['content'] = self.rendered_content
|
||||
else:
|
||||
|
||||
@ -1361,6 +1361,15 @@ class GetOldMessagesTest(AuthedTestCase):
|
||||
self.exercise_bad_narrow_operand("pm-with", ['non-existent-user@humbughq.com'],
|
||||
"Invalid narrow operator: unknown user")
|
||||
|
||||
def test_message_without_rendered_content(self):
|
||||
"""Older messages may not have rendered_content in the database"""
|
||||
m = Message.objects.all().order_by('-id')[0]
|
||||
m.rendered_content = m.rendered_content_version = None
|
||||
m.content = 'test content'
|
||||
# Use to_dict_uncached directly to avoid having to deal with memcached
|
||||
d = m.to_dict_uncached(True)
|
||||
self.assertEqual(d['content'], '<p>test content</p>')
|
||||
|
||||
class InviteUserTest(AuthedTestCase):
|
||||
|
||||
def invite(self, users, streams):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user