mirror of
https://github.com/zulip/zulip.git
synced 2025-11-02 13:03:29 +00:00
reminders: Add API endpoint to schedule reminders.
This commit is contained in:
35
zerver/views/reminders.py
Normal file
35
zerver/views/reminders.py
Normal file
@@ -0,0 +1,35 @@
|
||||
from django.http import HttpRequest, HttpResponse
|
||||
from django.utils.timezone import now as timezone_now
|
||||
from pydantic import Json
|
||||
|
||||
from zerver.actions.reminders import schedule_reminder_for_message
|
||||
from zerver.lib.exceptions import DeliveryTimeNotInFutureError
|
||||
from zerver.lib.request import RequestNotes
|
||||
from zerver.lib.response import json_success
|
||||
from zerver.lib.timestamp import timestamp_to_datetime
|
||||
from zerver.lib.typed_endpoint import typed_endpoint
|
||||
from zerver.models import UserProfile
|
||||
|
||||
|
||||
@typed_endpoint
|
||||
def create_reminders_message_backend(
|
||||
request: HttpRequest,
|
||||
user_profile: UserProfile,
|
||||
*,
|
||||
message_id: Json[int],
|
||||
scheduled_delivery_timestamp: Json[int],
|
||||
) -> HttpResponse:
|
||||
deliver_at = timestamp_to_datetime(scheduled_delivery_timestamp)
|
||||
if deliver_at <= timezone_now():
|
||||
raise DeliveryTimeNotInFutureError
|
||||
|
||||
client = RequestNotes.get_notes(request).client
|
||||
assert client is not None
|
||||
|
||||
reminder_id = schedule_reminder_for_message(
|
||||
user_profile,
|
||||
client,
|
||||
message_id,
|
||||
deliver_at,
|
||||
)
|
||||
return json_success(request, data={"reminder_id": reminder_id})
|
||||
Reference in New Issue
Block a user