Skip to content

Commit

Permalink
Revert "S3: Workaround boto bug to fix collectstatic issue (#955)"
Browse files Browse the repository at this point in the history
This reverts commit 7771782.
  • Loading branch information
jschneier committed Dec 18, 2020
1 parent 96b5a88 commit b66cef7
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 38 deletions.
7 changes: 3 additions & 4 deletions storages/backends/s3boto3.py
Expand Up @@ -16,8 +16,8 @@

from storages.base import BaseStorage
from storages.utils import (
NonCloseableBufferedReader, check_location, get_available_overwrite_name,
lookup_env, safe_join, setting, to_bytes,
check_location, get_available_overwrite_name, lookup_env, safe_join,
setting, to_bytes,
)

try:
Expand Down Expand Up @@ -442,8 +442,7 @@ def _save(self, name, content):

obj = self.bucket.Object(name)
content.seek(0, os.SEEK_SET)
with NonCloseableBufferedReader(content) as reader:
obj.upload_fileobj(reader, ExtraArgs=params)
obj.upload_fileobj(content, ExtraArgs=params)
return cleaned_name

def delete(self, name):
Expand Down
8 changes: 0 additions & 8 deletions storages/utils.py
@@ -1,4 +1,3 @@
import io
import os
import posixpath

Expand Down Expand Up @@ -127,10 +126,3 @@ def get_available_overwrite_name(name, max_length):
'allows sufficient "max_length".' % name
)
return os.path.join(dir_name, "{}{}".format(file_root, file_ext))


# A buffered reader that does not actually close, workaround for
# https://github.com/boto/s3transfer/issues/80#issuecomment-562356142
class NonCloseableBufferedReader(io.BufferedReader):
def close(self):
self.flush()
46 changes: 20 additions & 26 deletions tests/test_s3boto3.py
Expand Up @@ -22,12 +22,6 @@ def setUp(self):
self.storage._connections.connection = mock.MagicMock()


def assert_called_upload(mock_uploadobj, content, extra):
assert mock_uploadobj.call_count == 1
assert mock_uploadobj.call_args[0][0].raw == content
assert mock_uploadobj.call_args[1] == extra


class S3Boto3StorageTests(S3Boto3TestCase):

def test_clean_name(self):
Expand Down Expand Up @@ -113,12 +107,12 @@ def test_storage_save(self):
self.storage.bucket.Object.assert_called_once_with(name)

obj = self.storage.bucket.Object.return_value
extra = {
'ExtraArgs': {
obj.upload_fileobj.assert_called_with(
content,
ExtraArgs={
'ContentType': 'text/plain',
}
}
assert_called_upload(obj.upload_fileobj, content, extra)
)

def test_storage_save_with_default_acl(self):
"""
Expand All @@ -131,13 +125,13 @@ def test_storage_save_with_default_acl(self):
self.storage.bucket.Object.assert_called_once_with(name)

obj = self.storage.bucket.Object.return_value
extra = {
'ExtraArgs': {
obj.upload_fileobj.assert_called_with(
content,
ExtraArgs={
'ContentType': 'text/plain',
'ACL': 'private',
}
}
assert_called_upload(obj.upload_fileobj, content, extra)
)

def test_storage_object_parameters_not_overwritten_by_default(self):
"""
Expand All @@ -151,13 +145,13 @@ def test_storage_object_parameters_not_overwritten_by_default(self):
self.storage.bucket.Object.assert_called_once_with(name)

obj = self.storage.bucket.Object.return_value
extra = {
'ExtraArgs': {
obj.upload_fileobj.assert_called_with(
content,
ExtraArgs={
'ContentType': 'text/plain',
'ACL': 'private',
}
}
assert_called_upload(obj.upload_fileobj, content, extra)
)

def test_content_type(self):
"""
Expand All @@ -170,12 +164,12 @@ def test_content_type(self):
self.storage.bucket.Object.assert_called_once_with(name)

obj = self.storage.bucket.Object.return_value
extra = {
'ExtraArgs': {
obj.upload_fileobj.assert_called_with(
content,
ExtraArgs={
'ContentType': 'image/jpeg',
}
}
assert_called_upload(obj.upload_fileobj, content, extra)
)

def test_storage_save_gzipped(self):
"""
Expand All @@ -185,13 +179,13 @@ def test_storage_save_gzipped(self):
content = ContentFile("I am gzip'd")
self.storage.save(name, content)
obj = self.storage.bucket.Object.return_value
extra = {
'ExtraArgs': {
obj.upload_fileobj.assert_called_with(
content,
ExtraArgs={
'ContentType': 'application/octet-stream',
'ContentEncoding': 'gzip',
}
}
assert_called_upload(obj.upload_fileobj, content, extra)
)

def test_storage_save_gzip(self):
"""
Expand Down

0 comments on commit b66cef7

Please sign in to comment.