Source code for plynx.utils.content

"""Create default empty Operations"""
# TODO: delete this file? Why do we need it?
# pylint: disable-all
import plynx.constants
import plynx.db.node
import plynx.utils.plugin_manager

[docs]workflow_manager = plynx.utils.plugin_manager.get_workflow_manager()
[docs]executor_manager = plynx.utils.plugin_manager.get_executor_manager()
[docs]def create_template(user, kind, cmd, title, description, inputs=None, parameters=None, outputs=None): node = executor_manager.kind_to_executor_class[kind].get_default_node( is_workflow=kind in workflow_manager.kind_to_workflow_dict ) node.author = user._id node.title = title node.description = description node.kind = kind cmd_parameter = next(filter(lambda parameter: parameter.name == '_cmd', node.parameters)) cmd_parameter.value.value = cmd node.inputs.extend(inputs or []) node.parameters.extend(parameters or []) node.outputs.extend(outputs or []) validation_error = executor_manager.kind_to_executor_class[kind](node).validate() if validation_error: raise Exception('Validation failed') node.node_status = plynx.constants.NodeStatus.READY node.save(force=True)
[docs]def create_default_templates(user): create_template( user=user, kind='basic-bash-jinja2-operation', cmd='cat {{inputs["in"] | join(" ")}} | paste -sd+ | bc >> {{outputs["out"]}}', title='Sum of numbers', description='sum', inputs=[ plynx.db.node.Input({ 'name': 'in', 'is_array': True, }), ], outputs=[ plynx.db.node.Output({ 'name': 'out', }), ], ) create_template( user=user, kind='basic-bash-jinja2-operation', cmd='seq {{params["from"]}} {{params["to"]}} >> {{outputs["out"]}}', title='Numbers A to B', description='Print text', parameters=[ plynx.db.node.Parameter({ 'name': 'from', 'type': plynx.constants.ParameterTypes.INT, 'value': '1', 'widget': 'From', }), plynx.db.node.Parameter({ 'name': 'to', 'type': plynx.constants.ParameterTypes.INT, 'value': '100', 'widget': 'To', }), ], outputs=[ plynx.db.node.Output({ 'name': 'out',
}), ], )