From dc36cc1ed34cf9d217f01df07162745559d93957 Mon Sep 17 00:00:00 2001 From: avollkopf <43980694+avollkopf@users.noreply.github.com> Date: Thu, 6 Apr 2023 12:40:49 +0200 Subject: [PATCH] test withconfig parameter removal --- cbpi/__init__.py | 2 +- cbpi/api/base.py | 3 +++ cbpi/controller/config_controller.py | 19 ++++++++++++++++++- cbpi/http_endpoints/http_config.py | 25 ++++++++++++++++++++++++- 4 files changed, 46 insertions(+), 3 deletions(-) diff --git a/cbpi/__init__.py b/cbpi/__init__.py index 0b47676..622871d 100644 --- a/cbpi/__init__.py +++ b/cbpi/__init__.py @@ -1,3 +1,3 @@ -__version__ = "4.1.8.a5" +__version__ = "4.1.8.a6" __codename__ = "Groundhog Day" diff --git a/cbpi/api/base.py b/cbpi/api/base.py index 9fd4692..51b7c46 100644 --- a/cbpi/api/base.py +++ b/cbpi/api/base.py @@ -16,6 +16,9 @@ class CBPiBase(metaclass=ABCMeta): async def set_config_value(self,name,value): return await self.cbpi.config.set(name,value) + + async def remove_config_parameter(self,name): + return await self.cbpi.config.remove(name) async def add_config_value(self, name, value, type: ConfigType, description, source, options=None): await self.cbpi.config.add(name, value, type, description, source,options=None) diff --git a/cbpi/controller/config_controller.py b/cbpi/controller/config_controller.py index e0c5587..2000b13 100644 --- a/cbpi/controller/config_controller.py +++ b/cbpi/controller/config_controller.py @@ -50,10 +50,27 @@ class ConfigController: with open(self.path, "w") as file: json.dump(data, file, indent=4, sort_keys=True) - async def add(self, name, value, type: ConfigType, description, source="", options=None): + async def add(self, name, value, type: ConfigType, description, source="craftbeerpi", options=None): self.cache[name] = Config(name,value,description,type,source,options) data = {} for key, value in self.cache.items(): data[key] = value.to_dict() with open(self.path, "w") as file: json.dump(data, file, indent=4, sort_keys=True) + + async def remove(self, name): + data = {} + self.testcache={} + for key, value in self.cache.items(): + try: + if key != name: + data[key] = value.to_dict() + self.testcache[key] = Config(name=data[key].get("name"), value=data[key].get("value"), description=data[key].get("description"), + type=ConfigType(data[key].get("type", "string")), options=data[key].get("options", None), + source=data[key].get("source", "craftbeerpi") ) + except Exception as e: + print(e) + with open(self.path, "w") as file: + json.dump(data, file, indent=4, sort_keys=True) + self.cache=self.testcache + diff --git a/cbpi/http_endpoints/http_config.py b/cbpi/http_endpoints/http_config.py index 5e233d2..fc2d643 100644 --- a/cbpi/http_endpoints/http_config.py +++ b/cbpi/http_endpoints/http_config.py @@ -78,5 +78,28 @@ class ConfigHttpEndpoints: name = request.match_info['name'] # if name not in self.cache: # raise CBPiException("Parameter %s not found" % name) - data = self.controller.get(name) +# data = self.controller.get(name) return web.json_response(self.controller.get(name), dumps=json_dumps) + + @request_mapping(path="/remove/{name}/", method="PUT", auth_required=False) + async def http_remove(self, request) -> web.Response: + + """ + --- + description: Remove config parameter + tags: + - Config + parameters: + - name: "name" + in: "path" + description: "Parameter name" + required: true + type: "string" + responses: + "200": + description: successful operation + """ + + name = request.match_info['name'] + await self.controller.remove(name=name) + return web.Response(status=200) \ No newline at end of file