File tree Expand file tree Collapse file tree 2 files changed +14
-13
lines changed Expand file tree Collapse file tree 2 files changed +14
-13
lines changed Original file line number Diff line number Diff line change 22
33from django .core .files .storage import default_storage
44
5- try :
6- from django .utils .deprecation import MiddlewareMixin
7- except ImportError :
8- MiddlewareMixin = object
95
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 )
1018
11- class S3FileMiddleware (MiddlewareMixin ):
1219 @staticmethod
1320 def get_files_from_storage (paths ):
1421 """Return S3 file where the name does not include the path."""
1522 for path in paths :
1623 f = default_storage .open (path )
1724 f .name = os .path .basename (path )
1825 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):
1717 def test_process_request (self , rf ):
1818 uploaded_file = SimpleUploadedFile ('uploaded_file.txt' , b'uploaded' )
1919 request = rf .post ('/' , data = {'file' : uploaded_file })
20- S3FileMiddleware (). process_request (request )
20+ S3FileMiddleware (lambda x : None ) (request )
2121 assert request .FILES .getlist ('file' )
2222 assert request .FILES .get ('file' ).read () == b'uploaded'
2323
2424 default_storage .save ('s3_file.txt' , ContentFile (b's3file' ))
2525 request = rf .post ('/' , data = {'file' : 's3_file.txt' , 's3file' : 'file' })
26- S3FileMiddleware (). process_request (request )
26+ S3FileMiddleware (lambda x : None ) (request )
2727 assert request .FILES .getlist ('file' )
2828 assert request .FILES .get ('file' ).read () == b's3file'
You can’t perform that action at this time.
0 commit comments