mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	There are similar to what exists for scheduled messages expect the PATCH requests which will be added later when the functionality is implemented.
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from django.http import HttpRequest, HttpResponse
 | 
						|
from django.utils.timezone import now as timezone_now
 | 
						|
from pydantic import Json, NonNegativeInt
 | 
						|
 | 
						|
from zerver.actions.reminders import do_delete_reminder, schedule_reminder_for_message
 | 
						|
from zerver.lib.exceptions import DeliveryTimeNotInFutureError
 | 
						|
from zerver.lib.reminders import access_reminder
 | 
						|
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 PathOnly, 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})
 | 
						|
 | 
						|
 | 
						|
@typed_endpoint
 | 
						|
def delete_reminder(
 | 
						|
    request: HttpRequest,
 | 
						|
    user_profile: UserProfile,
 | 
						|
    *,
 | 
						|
    reminder_id: PathOnly[NonNegativeInt],
 | 
						|
) -> HttpResponse:
 | 
						|
    reminder = access_reminder(user_profile, reminder_id)
 | 
						|
    do_delete_reminder(user_profile, reminder)
 | 
						|
    return json_success(request)
 |