File tree 2 files changed +14
-13
lines changed
2 files changed +14
-13
lines changed Original file line number Diff line number Diff line change 2
2
3
3
from django .core .files .storage import default_storage
4
4
5
- try :
6
- from django .utils .deprecation import MiddlewareMixin
7
- except ImportError :
8
- MiddlewareMixin = object
9
5
6
+ class S3FileMiddleware :
7
+
8
+ def __init__ (self , get_response ):
9
+ self .get_response = get_response
10
+
11
+ def __call__ (self , request ):
12
+ file_fields = request .POST .getlist ('s3file' , [])
13
+ for field_name in file_fields :
14
+ paths = request .POST .getlist (field_name , [])
15
+ request .FILES .setlist (field_name , list (self .get_files_from_storage (paths )))
16
+
17
+ return self .get_response (request )
10
18
11
- class S3FileMiddleware (MiddlewareMixin ):
12
19
@staticmethod
13
20
def get_files_from_storage (paths ):
14
21
"""Return S3 file where the name does not include the path."""
15
22
for path in paths :
16
23
f = default_storage .open (path )
17
24
f .name = os .path .basename (path )
18
25
yield f
19
-
20
- def process_request (self , request ):
21
- file_fields = request .POST .getlist ('s3file' , [])
22
- for field_name in file_fields :
23
- paths = request .POST .getlist (field_name , [])
24
- request .FILES .setlist (field_name , list (self .get_files_from_storage (paths )))
Original file line number Diff line number Diff line change @@ -17,12 +17,12 @@ def test_get_files_from_storage(self):
17
17
def test_process_request (self , rf ):
18
18
uploaded_file = SimpleUploadedFile ('uploaded_file.txt' , b'uploaded' )
19
19
request = rf .post ('/' , data = {'file' : uploaded_file })
20
- S3FileMiddleware (). process_request (request )
20
+ S3FileMiddleware (lambda x : None ) (request )
21
21
assert request .FILES .getlist ('file' )
22
22
assert request .FILES .get ('file' ).read () == b'uploaded'
23
23
24
24
default_storage .save ('s3_file.txt' , ContentFile (b's3file' ))
25
25
request = rf .post ('/' , data = {'file' : 's3_file.txt' , 's3file' : 'file' })
26
- S3FileMiddleware (). process_request (request )
26
+ S3FileMiddleware (lambda x : None ) (request )
27
27
assert request .FILES .getlist ('file' )
28
28
assert request .FILES .get ('file' ).read () == b's3file'
You can’t perform that action at this time.
0 commit comments