def save_record(f, model, sid, source_type, smile=None, local_search_id=None): from chemistry.tasks import calculateTask, DEFAULT_TEMPERATURE_ARGS task = SingleTask() task.start_time = utils.get_real_now() task.sid = SuiteTask.objects.get(sid=sid) task.pid = str(uuid.uuid4()) task.model = ModelCategory.objects.get(category=model['model']) temperature = model.get('temperature') task.temperature = float(temperature) if temperature else DEFAULT_TEMPERATURE_ARGS if source_type == ORIGIN_UPLOAD: # here, f is ProcessedFile record instance f.file_source = FileSourceCategory.objects.get(category=source_type) f.file_type = "mol" task.file_obj = f f.save() elif source_type in (ORIGIN_SMILE, ORIGIN_DRAW): # here, f is a file path processed_f = ProcessedFile() obj = File(open(f, "r")) processed_f.title = os.path.basename(obj.name) processed_f.file_type = source_type processed_f.file_source = FileSourceCategory.objects.get(category=source_type) processed_f.file_obj = obj if smile: processed_f.smiles = smile if source_type == ORIGIN_SMILE and local_search_id is not None: processed_f.local_search_id = int(local_search_id) processed_f.save() task.file_obj = processed_f obj.close() else: raise ErrorCalculateType('Cannot recongize this source type') task.status = StatusCategory.objects.get(category=STATUS_WORKING) task.save() chemistry_logger.info('~~~~~~~~ t:%s' % task.start_time) calculateTask.delay(task, sid, model)
def file_upload_save_process(request): f = request.FILES["file"] name, filetype = split_file_name(UploadedFile(f).name) obj = ProcessedFile() obj.title = name obj.file_type = filetype obj.file_obj = f obj.save() return obj