mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 14:03:30 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			37 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from typing import Any, Dict
 | 
						|
 | 
						|
from django.db import models
 | 
						|
from typing_extensions import override
 | 
						|
 | 
						|
from zerver.lib.display_recipient import get_recipient_ids
 | 
						|
from zerver.models.constants import MAX_TOPIC_NAME_LENGTH
 | 
						|
from zerver.models.recipients import Recipient
 | 
						|
from zerver.models.users import UserProfile
 | 
						|
 | 
						|
 | 
						|
class Draft(models.Model):
 | 
						|
    """Server-side storage model for storing drafts so that drafts can be synced across
 | 
						|
    multiple clients/devices.
 | 
						|
    """
 | 
						|
 | 
						|
    user_profile = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
 | 
						|
    recipient = models.ForeignKey(Recipient, null=True, on_delete=models.SET_NULL)
 | 
						|
    topic = models.CharField(max_length=MAX_TOPIC_NAME_LENGTH, db_index=True)
 | 
						|
    content = models.TextField()  # Length should not exceed MAX_MESSAGE_LENGTH
 | 
						|
    last_edit_time = models.DateTimeField(db_index=True)
 | 
						|
 | 
						|
    @override
 | 
						|
    def __str__(self) -> str:
 | 
						|
        return f"{self.user_profile.email} / {self.id} / {self.last_edit_time}"
 | 
						|
 | 
						|
    def to_dict(self) -> Dict[str, Any]:
 | 
						|
        to, recipient_type_str = get_recipient_ids(self.recipient, self.user_profile_id)
 | 
						|
        return {
 | 
						|
            "id": self.id,
 | 
						|
            "type": recipient_type_str,
 | 
						|
            "to": to,
 | 
						|
            "topic": self.topic,
 | 
						|
            "content": self.content,
 | 
						|
            "timestamp": int(self.last_edit_time.timestamp()),
 | 
						|
        }
 |