def post_datastore_actions(datastore): """ :type datastore: dart.model.datastore.Datastore """ request_json = request.get_json() if not isinstance(request_json, list): request_json = [request_json] actions = [] for action_json in request_json: action = Action.from_dict(action_json) action.data.datastore_id = datastore.id action.data.state = ActionState.HAS_NEVER_RUN actions.append(action) engine_name = datastore.data.engine_name saved_actions = [ a.to_dict() for a in action_service().save_actions( actions, engine_name, datastore=datastore) ] trigger_proxy().try_next_action({ 'datastore_id': datastore.id, 'log_info': { 'user_id': current_user.email } }) return {'results': saved_actions}
def patch_action(action): """ :type action: dart.model.action.Action """ p = JsonPatch(request.get_json()) sanitized_action = action.copy() patched_action = Action.from_dict(p.apply(action.to_dict())) # only allow updating fields that are editable sanitized_action.data.name = patched_action.data.name sanitized_action.data.args = patched_action.data.args sanitized_action.data.tags = patched_action.data.tags sanitized_action.data.progress = patched_action.data.progress sanitized_action.data.order_idx = patched_action.data.order_idx sanitized_action.data.on_failure = patched_action.data.on_failure sanitized_action.data.on_failure_email = patched_action.data.on_failure_email sanitized_action.data.on_success_email = patched_action.data.on_success_email sanitized_action.data.extra_data = patched_action.data.extra_data # revalidate sanitized_action = action_service().default_and_validate_action( sanitized_action) return { 'results': action_service().patch_action(action, sanitized_action).to_dict() }
def post_workflow_actions(workflow): """ :type workflow: dart.model.workflow.Workflow """ request_json = request.get_json() if not isinstance(request_json, list): request_json = [request_json] actions = [] for action_json in request_json: action = Action.from_dict(action_json) action.data.workflow_id = workflow.id action.data.state = ActionState.TEMPLATE actions.append(action) datastore = datastore_service().get_datastore(workflow.data.datastore_id) engine_name = datastore.data.engine_name saved_actions = [a.to_dict() for a in action_service().save_actions(actions, engine_name)] return {'results': saved_actions}
def post_datastore_actions(datastore): """ :type datastore: dart.model.datastore.Datastore """ request_json = request.get_json() if not isinstance(request_json, list): request_json = [request_json] actions = [] for action_json in request_json: action = Action.from_dict(action_json) action.data.datastore_id = datastore.id action.data.state = ActionState.HAS_NEVER_RUN actions.append(action) engine_name = datastore.data.engine_name saved_actions = [a.to_dict() for a in action_service().save_actions(actions, engine_name, datastore=datastore)] trigger_proxy().try_next_action({'datastore_id':datastore.id, 'log_info':{'user_id': current_user.email}}) return {'results': saved_actions}
def _resolve_and_save_action(self, entity_id, entity_map, actual_entities_by_node_id, actual_entities_by_unsaved_id): actual_id, unsaved_id = self._resolve(EntityType.action, entity_id, entity_map, actual_entities_by_unsaved_id) if actual_id: return actual_id node_id = self._node_id(EntityType.action, unsaved_id) action = Action.from_dict(entity_map['unsaved_entities'][node_id]) assert isinstance(action, Action) if action.data.datastore_id: action.data.datastore_id = self._resolve_and_save_datastore(action.data.datastore_id, entity_map, actual_entities_by_node_id, actual_entities_by_unsaved_id) if action.data.workflow_id: action.data.workflow_id = self._resolve_and_save_workflow(action.data.workflow_id, entity_map, actual_entities_by_node_id, actual_entities_by_unsaved_id) if action.data.args and action.data.args.get('subscription_id'): action.data.args['subscription_id'] = self._resolve_and_save_subscription(action.data.args['subscription_id'], entity_map, actual_entities_by_node_id, actual_entities_by_unsaved_id) if action.data.args and action.data.args.get('dataset_id'): action.data.args['dataset_id'] = self._resolve_and_save_dataset(action.data.args['dataset_id'], entity_map, actual_entities_by_node_id, actual_entities_by_unsaved_id) engine_name, datastore = self._find_engine_name_and_datastore(action) action = self._action_service.save_actions([action], engine_name, datastore, commit=False, flush=True)[0] actual_entities_by_node_id[node_id] = action actual_entities_by_unsaved_id[unsaved_id] = action return action.id
def patch_action(action): """ :type action: dart.model.action.Action """ p = JsonPatch(request.get_json()) return update_action(action, Action.from_dict(p.apply(action.to_dict())))
def put_action(action): """ :type action: dart.model.action.Action """ return update_action(action, Action.from_dict(request.get_json()))