mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 14:03:30 +00:00 
			
		
		
		
	Be able to upload images to S3 from outside the web client.
We'll need this to upload attachments sent through the email gateway. (imported from commit b2f5eb736b65f1478189c3aebd4cb37f1ad540fb)
This commit is contained in:
		@@ -64,9 +64,7 @@ def get_file_info(request, user_file):
 | 
			
		||||
        uploaded_file_name = uploaded_file_name + guess_extension(content_type)
 | 
			
		||||
    return uploaded_file_name, content_type
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def upload_message_image(request, user_file, user_profile):
 | 
			
		||||
    uploaded_file_name, content_type = get_file_info(request, user_file)
 | 
			
		||||
def upload_message_image(uploaded_file_name, content_type, user_file, user_profile):
 | 
			
		||||
    bucket_name = settings.S3_BUCKET
 | 
			
		||||
    s3_file_name = gen_s3_key(user_profile, uploaded_file_name)
 | 
			
		||||
    upload_image_to_s3(
 | 
			
		||||
@@ -78,6 +76,10 @@ def upload_message_image(request, user_file, user_profile):
 | 
			
		||||
    )
 | 
			
		||||
    return "https://%s.s3.amazonaws.com/%s" % (bucket_name, s3_file_name)
 | 
			
		||||
 | 
			
		||||
def upload_message_image_through_web_client(request, user_file, user_profile):
 | 
			
		||||
    uploaded_file_name, content_type = get_file_info(request, user_file)
 | 
			
		||||
    return upload_message_image(uploaded_file_name, content_type, user_file, user_profile)
 | 
			
		||||
 | 
			
		||||
def upload_avatar_image(user_file, user_profile, email):
 | 
			
		||||
    content_type = guess_type(user_file.name)[0]
 | 
			
		||||
    bucket_name = settings.S3_AVATAR_BUCKET
 | 
			
		||||
 
 | 
			
		||||
@@ -56,7 +56,7 @@ from zerver.decorator import require_post, \
 | 
			
		||||
    authenticated_rest_api_view, process_as_post, REQ, rate_limit_user
 | 
			
		||||
from zerver.lib.query import last_n
 | 
			
		||||
from zerver.lib.avatar import avatar_url
 | 
			
		||||
from zerver.lib.upload import upload_message_image, upload_avatar_image
 | 
			
		||||
from zerver.lib.upload import upload_message_image_through_web_client, upload_avatar_image
 | 
			
		||||
from zerver.lib.response import json_success, json_error, json_response, json_method_not_allowed
 | 
			
		||||
from zerver.lib.cache import cache_get_many, cache_set_many, \
 | 
			
		||||
    generic_bulk_cached_fetch
 | 
			
		||||
@@ -1624,7 +1624,7 @@ def json_upload_file(request, user_profile):
 | 
			
		||||
        return json_error("You may only upload one file at a time")
 | 
			
		||||
 | 
			
		||||
    user_file = request.FILES.values()[0]
 | 
			
		||||
    uri = upload_message_image(request, user_file, user_profile)
 | 
			
		||||
    uri = upload_message_image_through_web_client(request, user_file, user_profile)
 | 
			
		||||
    return json_success({'uri': uri})
 | 
			
		||||
 | 
			
		||||
@has_request_variables
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user