def _do_create_multipart_upload( workflow: Workflow, wf_module: WfModule, filename: str ) -> Dict[str, str]: key = _generate_key(wf_module, filename) with workflow.cooperative_lock(): wf_module.refresh_from_db() wf_module.abort_inprogress_upload() # in case there is one already upload_id = minio.create_multipart_upload(minio.UserFilesBucket, key, filename) wf_module.inprogress_file_upload_id = upload_id wf_module.inprogress_file_upload_key = key wf_module.inprogress_file_upload_last_accessed_at = timezone.now() wf_module.save( update_fields=['inprogress_file_upload_id', 'inprogress_file_upload_key', 'inprogress_file_upload_last_accessed_at'] ) return {'key': key, 'uploadId': upload_id}
def _do_prepare_upload( workflow: Workflow, wf_module: WfModule, filename: str, n_bytes: int, base64Md5sum: str, ) -> Dict[str, str]: key = _generate_key(wf_module, filename) with workflow.cooperative_lock(): wf_module.refresh_from_db() wf_module.abort_inprogress_upload() url, headers = minio.presign_upload(minio.UserFilesBucket, key, filename, n_bytes, base64Md5sum) wf_module.inprogress_file_upload_id = None wf_module.inprogress_file_upload_key = key wf_module.inprogress_file_upload_last_accessed_at = timezone.now() wf_module.save( update_fields=['inprogress_file_upload_id', 'inprogress_file_upload_key', 'inprogress_file_upload_last_accessed_at'] ) return {'key': key, 'url': url, 'headers': headers}
def _do_abort_upload(wf_module: WfModule) -> None: wf_module.abort_inprogress_upload()