mirror of https://github.com/zulip/zulip.git
models: Add method to convert ScheduleMessage objects into dicts.
This commit is contained in:
parent
963fe566d7
commit
4cb238fb6e
|
@ -4281,6 +4281,16 @@ class ScheduledMessageNotificationEmail(models.Model):
|
||||||
scheduled_timestamp = models.DateTimeField(db_index=True)
|
scheduled_timestamp = models.DateTimeField(db_index=True)
|
||||||
|
|
||||||
|
|
||||||
|
class ScheduledMessageDict(TypedDict):
|
||||||
|
scheduled_message_id: int
|
||||||
|
to: List[int]
|
||||||
|
type: str
|
||||||
|
content: str
|
||||||
|
rendered_content: str
|
||||||
|
topic: str
|
||||||
|
deliver_at: int
|
||||||
|
|
||||||
|
|
||||||
class ScheduledMessage(models.Model):
|
class ScheduledMessage(models.Model):
|
||||||
sender = models.ForeignKey(UserProfile, on_delete=CASCADE)
|
sender = models.ForeignKey(UserProfile, on_delete=CASCADE)
|
||||||
recipient = models.ForeignKey(Recipient, on_delete=CASCADE)
|
recipient = models.ForeignKey(Recipient, on_delete=CASCADE)
|
||||||
|
@ -4316,6 +4326,19 @@ class ScheduledMessage(models.Model):
|
||||||
def set_topic_name(self, topic_name: str) -> None:
|
def set_topic_name(self, topic_name: str) -> None:
|
||||||
self.subject = topic_name
|
self.subject = topic_name
|
||||||
|
|
||||||
|
def to_dict(self) -> ScheduledMessageDict:
|
||||||
|
recipient, recipient_type_str = get_recipient_ids(self.recipient, self.sender.id)
|
||||||
|
|
||||||
|
return ScheduledMessageDict(
|
||||||
|
scheduled_message_id=self.id,
|
||||||
|
to=recipient,
|
||||||
|
type=recipient_type_str,
|
||||||
|
content=self.content,
|
||||||
|
rendered_content=self.rendered_content,
|
||||||
|
topic=self.topic_name(),
|
||||||
|
deliver_at=int(self.scheduled_timestamp.timestamp() * 1000),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
EMAIL_TYPES = {
|
EMAIL_TYPES = {
|
||||||
"followup_day1": ScheduledEmail.WELCOME,
|
"followup_day1": ScheduledEmail.WELCOME,
|
||||||
|
|
|
@ -1,21 +1,9 @@
|
||||||
from typing import List, TypedDict
|
|
||||||
|
|
||||||
from django.http import HttpRequest, HttpResponse
|
from django.http import HttpRequest, HttpResponse
|
||||||
|
|
||||||
from zerver.actions.scheduled_messages import delete_scheduled_message
|
from zerver.actions.scheduled_messages import delete_scheduled_message
|
||||||
from zerver.lib.request import has_request_variables
|
from zerver.lib.request import has_request_variables
|
||||||
from zerver.lib.response import json_success
|
from zerver.lib.response import json_success
|
||||||
from zerver.models import ScheduledMessage, UserProfile, get_recipient_ids
|
from zerver.models import ScheduledMessage, UserProfile
|
||||||
|
|
||||||
|
|
||||||
class ScheduledMessageDict(TypedDict):
|
|
||||||
scheduled_message_id: int
|
|
||||||
to: List[int]
|
|
||||||
type: str
|
|
||||||
content: str
|
|
||||||
rendered_content: str
|
|
||||||
topic: str
|
|
||||||
deliver_at: int
|
|
||||||
|
|
||||||
|
|
||||||
@has_request_variables
|
@has_request_variables
|
||||||
|
@ -23,24 +11,9 @@ def fetch_scheduled_messages(request: HttpRequest, user_profile: UserProfile) ->
|
||||||
scheduled_messages = ScheduledMessage.objects.filter(
|
scheduled_messages = ScheduledMessage.objects.filter(
|
||||||
sender=user_profile, delivered=False, delivery_type=ScheduledMessage.SEND_LATER
|
sender=user_profile, delivered=False, delivery_type=ScheduledMessage.SEND_LATER
|
||||||
).order_by("scheduled_timestamp")
|
).order_by("scheduled_timestamp")
|
||||||
scheduled_message_dicts: List[ScheduledMessageDict] = []
|
scheduled_message_dicts = [
|
||||||
|
scheduled_message.to_dict() for scheduled_message in scheduled_messages
|
||||||
for scheduled_message in scheduled_messages:
|
]
|
||||||
recipient, recipient_type_str = get_recipient_ids(
|
|
||||||
scheduled_message.recipient, user_profile.id
|
|
||||||
)
|
|
||||||
|
|
||||||
msg_to_dict: ScheduledMessageDict = {
|
|
||||||
"scheduled_message_id": scheduled_message.id,
|
|
||||||
"to": recipient,
|
|
||||||
"type": recipient_type_str,
|
|
||||||
"content": scheduled_message.content,
|
|
||||||
"rendered_content": scheduled_message.rendered_content,
|
|
||||||
"topic": scheduled_message.topic_name(),
|
|
||||||
"deliver_at": int(scheduled_message.scheduled_timestamp.timestamp() * 1000),
|
|
||||||
}
|
|
||||||
scheduled_message_dicts.append(msg_to_dict)
|
|
||||||
|
|
||||||
return json_success(request, data={"scheduled_messages": scheduled_message_dicts})
|
return json_success(request, data={"scheduled_messages": scheduled_message_dicts})
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue