mirror of
				https://github.com/zulip/zulip.git
				synced 2025-10-31 20:13:46 +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)
 |