Skip to content

Commit 967da52

Browse files
committed
Fix wrong removal from folder slashes if AWS_LOCATION is empty
1 parent a1ff855 commit 967da52

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

s3file/middleware.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ def __call__(self, request):
2929
def get_files_from_storage(paths):
3030
"""Return S3 file where the name does not include the path."""
3131
for path in paths:
32-
path = path.replace(os.path.dirname(storage.location) + '/', '', 1)
32+
if storage.location:
33+
path = path.replace(os.path.dirname(storage.location) + '/', '', 1)
3334
try:
3435
f = storage.open(path)
3536
f.name = os.path.basename(path)

tests/test_middleware.py

+19-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class TestS3FileMiddleware:
99

1010
def test_get_files_from_storage(self):
1111
content = b'test_get_files_from_storage'
12-
name = storage.save('test_get_files_from_storage', ContentFile(content))
12+
name = storage.save('tmp/s3file/test_get_files_from_storage', ContentFile(content))
1313
files = S3FileMiddleware.get_files_from_storage([name])
1414
file = next(files)
1515
assert file.read() == content
@@ -21,9 +21,25 @@ def test_process_request(self, rf):
2121
assert request.FILES.getlist('file')
2222
assert request.FILES.get('file').read() == b'uploaded'
2323

24-
storage.save('s3_file.txt', ContentFile(b's3file'))
24+
storage.save('tmp/s3file/s3_file.txt', ContentFile(b's3file'))
2525
request = rf.post('/', data={
26-
'file': '["custom/location/s3_file.txt"]', 's3file': '["file"]'
26+
'file': '["custom/location/tmp/s3file/s3_file.txt"]', 's3file': '["file"]'
27+
})
28+
S3FileMiddleware(lambda x: None)(request)
29+
assert request.FILES.getlist('file')
30+
assert request.FILES.get('file').read() == b's3file'
31+
32+
def test_process_request__no_location(self, rf, settings):
33+
settings.AWS_LOCATION = ''
34+
uploaded_file = SimpleUploadedFile('uploaded_file.txt', b'uploaded')
35+
request = rf.post('/', data={'file': uploaded_file})
36+
S3FileMiddleware(lambda x: None)(request)
37+
assert request.FILES.getlist('file')
38+
assert request.FILES.get('file').read() == b'uploaded'
39+
40+
storage.save('tmp/s3file/s3_file.txt', ContentFile(b's3file'))
41+
request = rf.post('/', data={
42+
'file': '["tmp/s3file/s3_file.txt"]', 's3file': '["file"]'
2743
})
2844
S3FileMiddleware(lambda x: None)(request)
2945
assert request.FILES.getlist('file')

0 commit comments

Comments
 (0)