def put(self, identifier=None): """Update one or more actions. :param identifier: Optional. If provided, it's UUID or name of an action. Only one action can be updated with identifier param. NOTE: This text is allowed to have definitions of multiple actions. In this case they all will be updated. """ acl.enforce('actions:update', context.ctx()) definition = pecan.request.text LOG.debug("Update action(s) [definition=%s]", definition) scope = pecan.request.GET.get('scope', 'private') resources.Action.validate_scope(scope) @rest_utils.rest_retry_on_db_error def _update_actions(): with db_api.transaction(): return actions.update_actions( definition, scope=scope, identifier=identifier ) db_acts = _update_actions() action_list = [ resources.Action.from_db_model(db_act) for db_act in db_acts ] return resources.Actions(actions=action_list).to_json()
def post(self): """Create a new action. NOTE: This text is allowed to have definitions of multiple actions. In this case they all will be created. """ acl.enforce('actions:create', context.ctx()) definition = pecan.request.text scope = pecan.request.GET.get('scope', 'private') pecan.response.status = 201 resources.Action.validate_scope(scope) LOG.debug("Create action(s) [definition=%s]", definition) @rest_utils.rest_retry_on_db_error def _create_action_definitions(): with db_api.transaction(): return actions.create_actions(definition, scope=scope) db_acts = _create_action_definitions() action_list = [ resources.Action.from_db_model(db_act) for db_act in db_acts ] return resources.Actions(actions=action_list).to_json()
def post(self): """Create a new action. NOTE: This text is allowed to have definitions of multiple actions. In this case they all will be created. """ acl.enforce('actions:create', context.ctx()) definition = pecan.request.text scope = pecan.request.GET.get('scope', 'private') pecan.response.status = 201 if scope not in resources.SCOPE_TYPES.values: raise exc.InvalidModelException( "Scope must be one of the following: %s; actual: " "%s" % (resources.SCOPE_TYPES.values, scope)) LOG.info("Create action(s) [definition=%s]", definition) with db_api.transaction(): db_acts = actions.create_actions(definition, scope=scope) models_dicts = [db_act.to_dict() for db_act in db_acts] action_list = [resources.Action.from_dict(act) for act in models_dicts] return resources.Actions(actions=action_list).to_json()
def put(self, identifier=None): """Update one or more actions. NOTE: This text is allowed to have definitions of multiple actions. In this case they all will be updated. """ acl.enforce('actions:update', context.ctx()) definition = pecan.request.text LOG.info("Update action(s) [definition=%s]", definition) scope = pecan.request.GET.get('scope', 'private') if scope not in resources.SCOPE_TYPES.values: raise exc.InvalidModelException( "Scope must be one of the following: %s; actual: " "%s" % (resources.SCOPE_TYPES.values, scope)) with db_api.transaction(): db_acts = actions.update_actions(definition, scope=scope, identifier=identifier) models_dicts = [db_act.to_dict() for db_act in db_acts] action_list = [resources.Action.from_dict(act) for act in models_dicts] return resources.Actions(actions=action_list).to_json()
def put(self, identifier=None): """Update one or more actions. :param identifier: Optional. If provided, it's UUID or name of an action. Only one action can be updated with identifier param. NOTE: This text is allowed to have definitions of multiple actions. In this case they all will be updated. """ acl.enforce('actions:update', context.ctx()) definition = pecan.request.text LOG.debug("Update action(s) [definition=%s]", definition) scope = pecan.request.GET.get('scope', 'private') if scope not in resources.SCOPE_TYPES.values: raise exc.InvalidModelException( "Scope must be one of the following: %s; actual: " "%s" % (resources.SCOPE_TYPES.values, scope)) with db_api.transaction(): db_acts = actions.update_actions(definition, scope=scope, identifier=identifier) action_list = [ resources.Action.from_db_model(db_act) for db_act in db_acts ] return resources.Actions(actions=action_list).to_json()
def post(self, namespace=''): """Create a new action. :param namespace: Optional. The namespace to create the ad-hoc action in. actions with the same name can be added to a given project if they are in two different namespaces. (default namespace is '') NOTE: This text is allowed to have definitions of multiple actions. In this case they all will be created. """ acl.enforce('actions:create', context.ctx()) namespace = namespace or '' definition = pecan.request.text scope = pecan.request.GET.get('scope', 'private') pecan.response.status = 201 resources.Action.validate_scope(scope) if scope == 'public': acl.enforce('actions:publicize', context.ctx()) LOG.debug("Create action(s) [definition=%s]", definition) @rest_utils.rest_retry_on_db_error def _create_action_definitions(): with db_api.transaction(): return adhoc_actions.create_actions(definition, scope=scope, namespace=namespace) db_acts = _create_action_definitions() action_list = [ resources.Action.from_db_model(db_act) for db_act in db_acts ] return resources.Actions(actions=action_list).to_json()