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:
Jessica McKellar
2013-09-16 14:59:54 -04:00
parent 2c0ba365ae
commit 8a40fb346c
2 changed files with 7 additions and 5 deletions

View File

@@ -64,9 +64,7 @@ def get_file_info(request, user_file):
uploaded_file_name = uploaded_file_name + guess_extension(content_type) uploaded_file_name = uploaded_file_name + guess_extension(content_type)
return uploaded_file_name, content_type return uploaded_file_name, content_type
def upload_message_image(uploaded_file_name, content_type, user_file, user_profile):
def upload_message_image(request, user_file, user_profile):
uploaded_file_name, content_type = get_file_info(request, user_file)
bucket_name = settings.S3_BUCKET bucket_name = settings.S3_BUCKET
s3_file_name = gen_s3_key(user_profile, uploaded_file_name) s3_file_name = gen_s3_key(user_profile, uploaded_file_name)
upload_image_to_s3( 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) 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): def upload_avatar_image(user_file, user_profile, email):
content_type = guess_type(user_file.name)[0] content_type = guess_type(user_file.name)[0]
bucket_name = settings.S3_AVATAR_BUCKET bucket_name = settings.S3_AVATAR_BUCKET

View File

@@ -56,7 +56,7 @@ from zerver.decorator import require_post, \
authenticated_rest_api_view, process_as_post, REQ, rate_limit_user authenticated_rest_api_view, process_as_post, REQ, rate_limit_user
from zerver.lib.query import last_n from zerver.lib.query import last_n
from zerver.lib.avatar import avatar_url 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.response import json_success, json_error, json_response, json_method_not_allowed
from zerver.lib.cache import cache_get_many, cache_set_many, \ from zerver.lib.cache import cache_get_many, cache_set_many, \
generic_bulk_cached_fetch 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") return json_error("You may only upload one file at a time")
user_file = request.FILES.values()[0] 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}) return json_success({'uri': uri})
@has_request_variables @has_request_variables