models: Allow scheduled msgs to store rendered content.

This is required by the client to display a list of currently
scheduled messages.
This commit is contained in:
Aman Agrawal 2023-04-14 19:04:19 +00:00 committed by Tim Abbott
parent a941545523
commit b63f440fb1
4 changed files with 25 additions and 0 deletions

View File

@ -467,7 +467,11 @@ def do_schedule_messages(send_message_requests: Sequence[SendMessageRequest]) ->
scheduled_message.recipient = send_request.message.recipient scheduled_message.recipient = send_request.message.recipient
topic_name = send_request.message.topic_name() topic_name = send_request.message.topic_name()
scheduled_message.set_topic_name(topic_name=topic_name) scheduled_message.set_topic_name(topic_name=topic_name)
rendering_result = render_markdown(
send_request.message, send_request.message.content, send_request.realm
)
scheduled_message.content = send_request.message.content scheduled_message.content = send_request.message.content
scheduled_message.rendered_content = rendering_result.rendered_content
scheduled_message.sending_client = send_request.message.sending_client scheduled_message.sending_client = send_request.message.sending_client
scheduled_message.stream = send_request.stream scheduled_message.stream = send_request.stream
scheduled_message.realm = send_request.realm scheduled_message.realm = send_request.realm

View File

@ -0,0 +1,18 @@
# Generated by Django 4.1.5 on 2023-01-16 08:35
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("zerver", "0434_create_nobody_system_group"),
]
operations = [
migrations.AddField(
model_name="scheduledmessage",
name="rendered_content",
field=models.TextField(default=""),
preserve_default=False,
),
]

View File

@ -4326,6 +4326,7 @@ class ScheduledMessage(models.Model):
recipient = models.ForeignKey(Recipient, on_delete=CASCADE) recipient = models.ForeignKey(Recipient, on_delete=CASCADE)
subject = models.CharField(max_length=MAX_TOPIC_NAME_LENGTH) subject = models.CharField(max_length=MAX_TOPIC_NAME_LENGTH)
content = models.TextField() content = models.TextField()
rendered_content = models.TextField()
sending_client = models.ForeignKey(Client, on_delete=CASCADE) sending_client = models.ForeignKey(Client, on_delete=CASCADE)
stream = models.ForeignKey(Stream, null=True, on_delete=CASCADE) stream = models.ForeignKey(Stream, null=True, on_delete=CASCADE)
realm = models.ForeignKey(Realm, on_delete=CASCADE) realm = models.ForeignKey(Realm, on_delete=CASCADE)

View File

@ -1385,6 +1385,7 @@ class ScheduledMessageTest(ZulipTestCase):
message = self.last_scheduled_message() message = self.last_scheduled_message()
self.assert_json_success(result) self.assert_json_success(result)
self.assertEqual(message.content, "Test message 1") self.assertEqual(message.content, "Test message 1")
self.assertEqual(message.rendered_content, "<p>Test message 1</p>")
self.assertEqual(message.topic_name(), "Test topic") self.assertEqual(message.topic_name(), "Test topic")
self.assertEqual(message.scheduled_timestamp, convert_to_UTC(defer_until)) self.assertEqual(message.scheduled_timestamp, convert_to_UTC(defer_until))
self.assertEqual(message.delivery_type, ScheduledMessage.SEND_LATER) self.assertEqual(message.delivery_type, ScheduledMessage.SEND_LATER)
@ -1405,6 +1406,7 @@ class ScheduledMessageTest(ZulipTestCase):
message = self.last_scheduled_message() message = self.last_scheduled_message()
self.assert_json_success(result) self.assert_json_success(result)
self.assertEqual(message.content, "Test message 3") self.assertEqual(message.content, "Test message 3")
self.assertEqual(message.rendered_content, "<p>Test message 3</p>")
self.assertEqual(message.scheduled_timestamp, convert_to_UTC(defer_until)) self.assertEqual(message.scheduled_timestamp, convert_to_UTC(defer_until))
self.assertEqual(message.delivery_type, ScheduledMessage.SEND_LATER) self.assertEqual(message.delivery_type, ScheduledMessage.SEND_LATER)