Navigation Menu

Skip to content

Commit

Permalink
Make allowS3ExistenceOptimization optional.
Browse files Browse the repository at this point in the history
  • Loading branch information
bradleyg committed Feb 10, 2019
1 parent d67ffb1 commit 962a55c
Show file tree
Hide file tree
Showing 8 changed files with 59 additions and 5 deletions.
7 changes: 6 additions & 1 deletion README.md
Expand Up @@ -172,8 +172,13 @@ S3DIRECT_DESTINATIONS = {
'content_length_range': (5000, 20000000),

# "server_side_encryption" [optional] Use serverside encryption
# String: encrytion standard
# String: encrytion standard
'server_side_encryption': 'AES256',

# "allow_existence_optimization" [optional] Checks to see if file already exists,
# returns the URL to the object if so (no upload)
# Boolean: True, False
'allow_existence_optimization': False,
},
'example_destination_two': {
'key': lambda filename, args: args + '/' + filename,
Expand Down
1 change: 1 addition & 0 deletions example/example/settings.py
Expand Up @@ -140,6 +140,7 @@ def create_filename(filename):
'image/png'
],
'content_length_range': (5000, 20000000),
'allow_existence_optimization': True
},

# Allow authenticated users to upload mp4's
Expand Down
2 changes: 1 addition & 1 deletion package.json
@@ -1,6 +1,6 @@
{
"name": "django-s3direct",
"version": "1.1.1",
"version": "1.1.2",
"description": "Add direct uploads to S3 functionality with a progress bar to file input fields.",
"directories": {
"example": "example"
Expand Down
11 changes: 11 additions & 0 deletions runtests.py
Expand Up @@ -100,6 +100,17 @@ def is_authenticated(user):
'content_disposition': 'attachment',
'server_side_encryption': 'AES256'
},
'allow-existence-optimisation': {
'key': 'uploads',
'allow_existence_optimization': True,
},
'disallow-existence-optimisation': {
'key': 'uploads',
'allow_existence_optimization': False,
},
'unset-existence-optimisation': {
'key': 'uploads',
},
'custom-region-bucket': {
'key': 'uploads',
'region': 'cn-north-1',
Expand Down
2 changes: 1 addition & 1 deletion s3direct/static/s3direct/dist/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

36 changes: 36 additions & 0 deletions s3direct/tests.py
Expand Up @@ -236,6 +236,42 @@ def test_policy_conditions(self):
self.assertEqual(policy_dict['content_disposition'], u'attachment')
self.assertEqual(policy_dict['server_side_encryption'], u'AES256')

def test_custom_existence_optimisation_true(self):
data = {
'dest': 'allow-existence-optimisation',
'name': 'filename.jpg',
'type': 'image/jpeg',
'size': 1000
}
response = self.client.post(reverse('s3direct'), data)
self.assertEqual(response.status_code, 200)
policy_dict = json.loads(response.content.decode())
self.assertEqual(policy_dict['allow_existence_optimization'], True)

def test_custom_existence_optimisation_false(self):
data = {
'dest': 'disallow-existence-optimisation',
'name': 'filename.jpg',
'type': 'image/jpeg',
'size': 1000
}
response = self.client.post(reverse('s3direct'), data)
self.assertEqual(response.status_code, 200)
policy_dict = json.loads(response.content.decode())
self.assertEqual(policy_dict['allow_existence_optimization'], False)

def test_custom_existence_optimisation_unset(self):
data = {
'dest': 'unset-existence-optimisation',
'name': 'filename.jpg',
'type': 'image/jpeg',
'size': 1000
}
response = self.client.post(reverse('s3direct'), data)
self.assertEqual(response.status_code, 200)
policy_dict = json.loads(response.content.decode())
self.assertEqual(policy_dict['allow_existence_optimization'], False)

def test_custom_region_bucket(self):
data = {
'dest': 'custom-region-bucket',
Expand Down
1 change: 1 addition & 0 deletions s3direct/views.py
Expand Up @@ -79,6 +79,7 @@ def get_upload_params(request):
'bucket': bucket,
'endpoint': endpoint,
'acl': dest.get('acl') or 'public-read',
'allow_existence_optimization': dest.get('allow_existence_optimization', False)
}

optional_params = [
Expand Down
4 changes: 2 additions & 2 deletions src/index.js
Expand Up @@ -166,8 +166,8 @@ const initiateUpload = (element, signingUrl, uploadParameters, file, dest) => {
cryptoHexEncodedHash256: computeSha256,
partSize: 20 * 1024 * 1024,
logging: true,
allowS3ExistenceOptimization: true,
s3FileCacheHoursAgo: 12
allowS3ExistenceOptimization: uploadParameters.allow_existence_optimization,
s3FileCacheHoursAgo: uploadParameters.allow_existence_optimization ? 12 : 0
};

const addConfig = {
Expand Down

0 comments on commit 962a55c

Please sign in to comment.