mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	This commit adds the ability for users to include notes with their message reminders. Fixes #35070. Co-Authored-By: Aman Agrawal <amanagr@zulip.com>
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.6 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],
 | 
						|
    note: str | None = None,
 | 
						|
) -> 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,
 | 
						|
        note=note or "",
 | 
						|
    )
 | 
						|
    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)
 |