From 473a98d0a41fe5b60650e0f63b592ac658f2798a Mon Sep 17 00:00:00 2001 From: Kevin Mehall Date: Wed, 23 Oct 2013 13:41:13 -0400 Subject: [PATCH] Split out common code for existing and authenticated upload systems. (imported from commit bf513eaff90ae7c4a0be825317690058f9f54621) --- zerver/lib/upload.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/zerver/lib/upload.py b/zerver/lib/upload.py index f760b57691..fbdcd91ce4 100644 --- a/zerver/lib/upload.py +++ b/zerver/lib/upload.py @@ -23,16 +23,18 @@ import os # This is great, because passing the pseudofile object that Django gives # you to boto would be a pain. -def gen_s3_key(user_profile, name): +# To come up with a s3 key we randomly generate a "directory". The "file +# name" is the original filename provided by the user run through Django's +# slugify. + +def sanitize_name(name): split_name = name.split('.') base = ".".join(split_name[:-1]) extension = split_name[-1] + return slugify(base) + "." + slugify(extension) - # To come up with a s3 key we randomly generate a "directory". The "file - # name" is the original filename provided by the user run through Django's - # slugify. - - return base64.urlsafe_b64encode(os.urandom(60)) + "/" + slugify(base) + "." + slugify(extension) +def random_name(bytes=60): + return base64.urlsafe_b64encode(os.urandom(bytes)) def upload_image_to_s3( bucket_name, @@ -66,7 +68,7 @@ def get_file_info(request, user_file): def upload_message_image(uploaded_file_name, content_type, file_data, user_profile): bucket_name = settings.S3_BUCKET - s3_file_name = gen_s3_key(user_profile, uploaded_file_name) + s3_file_name = "/".join([random_name(60), sanitize_name(uploaded_file_name)]) upload_image_to_s3( bucket_name, s3_file_name,