mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			36 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from typing import Any, Dict, List
 | 
						|
 | 
						|
from django.utils.translation import ugettext as _
 | 
						|
 | 
						|
from zerver.lib.request import JsonableError
 | 
						|
from zerver.lib.upload import delete_message_image
 | 
						|
from zerver.models import Attachment, UserProfile
 | 
						|
 | 
						|
 | 
						|
def user_attachments(user_profile: UserProfile) -> List[Dict[str, Any]]:
 | 
						|
    attachments = Attachment.objects.filter(owner=user_profile).prefetch_related("messages")
 | 
						|
    return [a.to_dict() for a in attachments]
 | 
						|
 | 
						|
 | 
						|
def access_attachment_by_id(
 | 
						|
    user_profile: UserProfile, attachment_id: int, needs_owner: bool = False
 | 
						|
) -> Attachment:
 | 
						|
    query = Attachment.objects.filter(id=attachment_id)
 | 
						|
    if needs_owner:
 | 
						|
        query = query.filter(owner=user_profile)
 | 
						|
 | 
						|
    attachment = query.first()
 | 
						|
    if attachment is None:
 | 
						|
        raise JsonableError(_("Invalid attachment"))
 | 
						|
    return attachment
 | 
						|
 | 
						|
 | 
						|
def remove_attachment(user_profile: UserProfile, attachment: Attachment) -> None:
 | 
						|
    try:
 | 
						|
        delete_message_image(attachment.path_id)
 | 
						|
    except Exception:
 | 
						|
        raise JsonableError(
 | 
						|
            _("An error occurred while deleting the attachment. Please try again later.")
 | 
						|
        )
 | 
						|
    attachment.delete()
 |