def new_file(self, *args, **kwargs): super(TaskUploadHandler, self).new_file(*args, **kwargs) progress0 = TaskUploadProgress(uploaded_task=self.uploaded_task, progress=0) progress0.save() self.file = BytesIO() raise StopFutureHandlers()
def receive_data_chunk(self, raw_data, start): self.bytes_passed += len(raw_data) percent = self.bytes_passed * 100 / self.content_length if not TaskUploadProgress.objects.filter( uploaded_task=self.uploaded_task, progress=percent).exists(): progress = TaskUploadProgress(uploaded_task=self.uploaded_task, progress=percent) progress.save() self.file.write(raw_data) self.sha1.update(raw_data)
def file_complete(self, file_size): if not TaskUploadProgress.objects.filter( uploaded_task=self.uploaded_task, progress=100).exists(): progress100 = TaskUploadProgress(uploaded_task=self.uploaded_task, progress=100) progress100.save() file_name, ext = splitext_all(self.file_name) file_name = '%s%s' % (self.sha1.hexdigest(), ext) self.file.seek(0) return InMemoryUploadedFile( file=self.file, field_name=self.field_name, name=file_name, content_type=self.content_type, size=file_size, charset=self.charset, content_type_extra=self.content_type_extra, )