a #e@sXddlZddlZddlmZddlmZddlmZGdddeZGdddeZ dS) N) UploadedFile)FileUploadHandler)settingscs<eZdZdZfddZfddZddZdd ZZS) TemporaryFileUploadHandlerzA Upload handler that streams data into a temporary file. cstt|j|i|dSN)superr__init__selfargskwargs __class__/webodm/app/uploadhandler.pyrsz#TemporaryFileUploadHandler.__init__cs4tt|j|i|t|j|jd|j|j|_dS)zK Create the file object to append to as data is coming in. rN) rrnew_fileClosedTemporaryUploadedFile file_name content_typecharsetcontent_type_extrafiler r rrrsz#TemporaryFileUploadHandler.new_filecCs|j|dSr)rwrite)r raw_datastartrrrreceive_data_chunksz-TemporaryFileUploadHandler.receive_data_chunkcCs$|jd||j_|j|jS)Nr)rseeksizeclose)r file_sizerrr file_completes  z(TemporaryFileUploadHandler.file_complete) __name__ __module__ __qualname____doc__rrrr __classcell__rrr rrs   rcs2eZdZdZd fdd ZddZddZZS) rzH A file uploaded to a temporary location (i.e. stream-to-disk). Ncs0tjdtjdd}tt|||||||dS)Nz.uploadF)suffixdirdelete)tempfileNamedTemporaryFilerFILE_UPLOAD_TEMP_DIRrrr)r namerrrrrr rrr*sz$ClosedTemporaryUploadedFile.__init__cCs|jjS)z5 Returns the full path of this file. )rr,)r rrrtemporary_file_path.sz/ClosedTemporaryUploadedFile.temporary_file_pathc CsDz |jWSty>}z|jtjkr*WYd}~n d}~00dSr)rrOSErrorerrnoENOENT)r errrr4s   z!ClosedTemporaryUploadedFile.close)N)r!r"r#r$rr-rr%rrr rr&sr) r)r/django.core.files.uploadedfilerZdjango.core.files.uploadhandlerr django.confrrrrrrrs