reminders: Add API endpoint to schedule reminders.

This commit is contained in:
Aman Agrawal
2025-05-02 10:30:54 +05:30
committed by Tim Abbott
parent ad9cb50183
commit 733817cb51
17 changed files with 556 additions and 12 deletions

35
zerver/views/reminders.py Normal file
View 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})