def eval(self, data): """Evaluate the script and return executable.""" try: inputs = data.input.copy() hydrate_input_references(inputs, data.process.input_schema) hydrate_input_uploads(inputs, data.process.input_schema) inputs["proc"] = {"data_id": data.id, "data_path": settings.FLOW_EXECUTOR["DATA_PATH"]} script_template = data.process.run.get("bash", "") script = render_template(script_template, template.Context(inputs)) except template.TemplateSyntaxError as ex: data.status = Data.STATUS_ERROR data.process_error.append("Error in process script: {}".format(ex)) data.save() return None return script
def evaluate(self, data): """Evaluate the code needed to compute a given Data object.""" try: inputs = data.input.copy() hydrate_input_references(inputs, data.process.input_schema) hydrate_input_uploads(inputs, data.process.input_schema) inputs['proc'] = { 'data_id': data.id, 'data_dir': settings.FLOW_EXECUTOR['DATA_DIR'], } script_template = data.process.run.get('program', '') # Get the appropriate expression engine. If none is defined, do not evaluate # any expressions. expression_engine = data.process.requirements.get('expression-engine', None) if not expression_engine: return script_template return self.get_expression_engine(expression_engine).evaluate_block(script_template, inputs) except EvaluationError as error: raise ExecutionError('{}'.format(error))
def eval(self, data): """Evaluate the script and return executable.""" try: inputs = data.input.copy() hydrate_input_references(inputs, data.process.input_schema) hydrate_input_uploads(inputs, data.process.input_schema) inputs['proc'] = { 'data_id': data.id, 'data_dir': settings.FLOW_EXECUTOR['DATA_DIR'], } script_template = data.process.run.get('bash', '') script = render_template(script_template, template.Context(inputs)) except template.TemplateSyntaxError as ex: data.status = Data.STATUS_ERROR data.process_error.append('Error in process script: {}'.format(ex)) data.save() return None return script