def ln_input2job(path, input_type): """Link identical or newly created input to the given job.""" digest = _file_digest(path) linked_inputs = inputs4job(job.id) if any(li.digest == digest and li.input_type == input_type for li in linked_inputs): return in_model = (_identical_input(input_type, digest, job.owner.id) if not force_inputs else None) if in_model is None: # Save the raw input file contents to the DB: model_content = ModelContent() with open(path, 'rb') as fh: model_content.raw_content = fh.read() # Try to guess the content type: model_content.content_type = _get_content_type(path) model_content.save() in_model = Input(path=path, input_type=input_type, owner=job.owner, size=os.path.getsize(path), digest=digest, model_content=model_content) in_model.save() # Make sure we don't link to the same input more than once. if in_model.id not in inputs_seen: inputs_seen.add(in_model.id) i2j = Input2job(input=in_model, oq_job=job) i2j.save() return in_model
def ln_input2job(path, input_type): """Link identical or newly created input to the given job.""" digest = _file_digest(path) linked_inputs = inputs4job(job.id) if any(li.digest == digest and li.input_type == input_type for li in linked_inputs): return in_model = (_identical_input(input_type, digest, job.owner.id) if not force_inputs else None) if in_model is None: # Save the raw input file contents to the DB: model_content = ModelContent() with open(path, 'rb') as fh: model_content.raw_content = fh.read() # Try to guess the content type: model_content.content_type = _get_content_type(path) model_content.save() in_model = Input(path=path, input_type=input_type, owner=job.owner, size=os.path.getsize(path), digest=digest, model_content=model_content) in_model.save() # Make sure we don't link to the same input more than once. if in_model.id not in inputs_seen: inputs_seen.append(in_model.id) i2j = Input2job(input=in_model, oq_job=job) i2j.save() return in_model
def ln_input2job(job, path, input_type): """Link identical or newly created input to the given job.""" digest = _file_digest(path) linked_inputs = inputs4job(job.id) if any(li.digest == digest and li.input_type == input_type for li in linked_inputs): return in_model = (_identical_input(input_type, digest) if not force_inputs else None) if in_model is None: in_model = Input(path=path, input_type=input_type, owner=job.owner, size=os.path.getsize(path), digest=digest) in_model.save() # Make sure we don't link to the same input more than once. if in_model.id in inputs_seen: return else: inputs_seen.append(in_model.id) i2j = Input2job(input=in_model, oq_job=job) i2j.save()
def _insert_input_files(params, input_set): """Create uiapi.input records for all input files""" # insert input files in input table for param_key, file_type in INPUT_FILE_TYPES.items(): if param_key not in params: continue path = params[param_key] in_model = Input(input_set=input_set, path=path, input_type=file_type, size=os.path.getsize(path)) in_model.save() # insert soft-linked source models in input table if 'SOURCE_MODEL_LOGIC_TREE_FILE' in params: for path in get_source_models(params['SOURCE_MODEL_LOGIC_TREE_FILE']): in_model = Input(input_set=input_set, path=path, input_type='source', size=os.path.getsize(path)) in_model.save()