def get_one(self, script_id): """Return a script. :param script_id: UUID of the script to filter on. """ pyscripts = db_api.get_instance() try: script_db = pyscripts.get_script(uuid=script_id) return script_models.Script(**script_db.export_model()) except db_api.NoSuchScript as e: pecan.abort(400, six.text_type(e))
def post(self, script_data): """Create pyscripts script. :param script_data: Informations about the script to create. """ pyscripts = db_api.get_instance() try: data = self.normalize_data(script_data.data) script_db = pyscripts.create_script(script_data.name, data) pecan.response.location = pecan.request.path_url if pecan.response.location[-1] != '/': pecan.response.location += '/' pecan.response.location += script_db.script_id return script_models.Script(**script_db.export_model()) except db_api.ScriptAlreadyExists as e: pecan.abort(409, six.text_type(e))
def get_all(self, no_data=False): """Get the script list :param no_data: Set to True to remove script data from output. :return: List of every scripts. """ pyscripts = db_api.get_instance() script_list = [] script_uuid_list = pyscripts.list_scripts() for script_uuid in script_uuid_list: script_db = pyscripts.get_script(uuid=script_uuid) script = script_db.export_model() if no_data: del script['data'] script_list.append(script_models.Script(**script)) res = script_models.ScriptCollection(scripts=script_list) return res
def put(self, script_id, script_data): """Update pyscripts script. :param script_id: UUID of the script to update. :param script_data: Script data to update. """ pyscripts = db_api.get_instance() try: data = self.normalize_data(script_data.data) script_db = pyscripts.update_script(script_id, name=script_data.name, data=data) pecan.response.location = pecan.request.path_url if pecan.response.location[-1] != '/': pecan.response.location += '/' pecan.response.location += script_db.script_id return script_models.Script(**script_db.export_model()) except db_api.NoSuchScript as e: pecan.abort(400, six.text_type(e))