From 334e9e7335e779d39d943988d463dee6bbc9f588 Mon Sep 17 00:00:00 2001 From: avollkopf <43980694+avollkopf@users.noreply.github.com> Date: Thu, 17 Feb 2022 20:29:15 +0100 Subject: [PATCH] fix cli.py reverted back spell check for activation of plugins as metadata package does mix '_' with '-' --- cbpi/__init__.py | 2 +- cbpi/cli.py | 6 +- cbpi/controller/fermentation_controller.py | 7 +- cbpi/http_endpoints/http_fermentation.py | 134 ++++++++++++++++++++- cbpi/http_endpoints/http_system.py | 3 +- 5 files changed, 143 insertions(+), 9 deletions(-) diff --git a/cbpi/__init__.py b/cbpi/__init__.py index 8528c67..d019d2f 100644 --- a/cbpi/__init__.py +++ b/cbpi/__init__.py @@ -1 +1 @@ -__version__ = "4.0.1.16" +__version__ = "4.0.1.17.a2" diff --git a/cbpi/cli.py b/cbpi/cli.py index 6f310ff..6dfb358 100644 --- a/cbpi/cli.py +++ b/cbpi/cli.py @@ -223,9 +223,9 @@ def plugins_add(package_name): try: p_metadata= metadata(package_name) p_name=p_metadata['Name'] - if p_name != package_name: - print("Error. Package name {} does not exist. Did you mean {}".format(package_name,p_name)) - installation = False + #if p_name != package_name: + # print("Error. Package name {} does not exist. Did you mean {}".format(package_name,p_name)) + # installation = False except Exception as e: print("Error. Package {} cannot be found in installed packages".format(package_name)) installation = False diff --git a/cbpi/controller/fermentation_controller.py b/cbpi/controller/fermentation_controller.py index 7e2129e..193a9f5 100644 --- a/cbpi/controller/fermentation_controller.py +++ b/cbpi/controller/fermentation_controller.py @@ -180,7 +180,7 @@ class FermentationController: def _find_by_id(self, id): - return next((item for item in self.data if item.id == id), None) + return next((item for item in self.data if item.id == id), None) async def get_all(self): return list(map(lambda x: x.to_dict(), self.data)) @@ -269,10 +269,11 @@ class FermentationController: except Exception as e: self.logger.error(e) - async def update_step(self, id, step): + async def update_step(self, id, step: FermenterStep): item = self._find_by_id(id) - item = list(map(lambda old: item if old.id == step.id else old, item.steps)) + item.steps = list(map(lambda old: step if old.id == step.id else old, item.steps)) self.save() + async def delete_step(self, id, stepid): item = self._find_by_id(id) diff --git a/cbpi/http_endpoints/http_fermentation.py b/cbpi/http_endpoints/http_fermentation.py index ac523b4..cfaa100 100644 --- a/cbpi/http_endpoints/http_fermentation.py +++ b/cbpi/http_endpoints/http_fermentation.py @@ -1,5 +1,5 @@ from cbpi.controller.fermentation_controller import FermentationController -from cbpi.api.dataclasses import Fermenter, Step, Props +from cbpi.api.dataclasses import Fermenter, Step, Props, FermenterStep from aiohttp import web from cbpi.api import * import logging @@ -283,3 +283,135 @@ class FermentationHttpEndpoints(): data = await request.json() await self.controller.set_target_temp(id,data.get("temp")) return web.Response(status=204) + + @request_mapping(path="/{id}/addstep", method="POST", auth_required=False) + async def http_add_step(self, request): + + """ + + --- + description: Add Fermenterstep + tags: + - Fermenter + parameters: + - name: "id" + in: "path" + description: "Fermenter ID" + required: true + type: "integer" + format: "int64" + - in: body + name: body + description: Create a fermenterstep + required: true + schema: + type: object + responses: + "200": + description: successful operation + """ + + data = await request.json() + fermenterid= request.match_info['id'] + step = FermenterStep(name=data.get("name"), props=Props(data.get("props", {})), type=data.get("type")) + response_data = await self.controller.create_step(fermenterid,step) + return web.json_response(data=response_data.to_dict()) + + @request_mapping(path="/{fermenterid}/{stepid}", method="PUT", auth_required=False) + async def http_updatestep(self, request): + + """ + --- + description: Update FermenterStep + tags: + - Fermenter + parameters: + - name: "fermenterid" + in: "path" + description: "Fermenter ID" + required: true + type: "integer" + format: "int64" + - name: "stepid" + in: "path" + description: "Step ID" + required: true + type: "integer" + format: "int64" + - in: body + name: body + description: Update a Femrenterstep + required: false + schema: + type: object + responses: + "200": + description: successful operation + """ + + data = await request.json() + stepid = request.match_info['stepid'] + fermenterid = request.match_info['fermenterid'] + step = FermenterStep(stepid, data.get("name"), None, Props(data.get("props", {})), data.get("type")) + await self.controller.update_step(fermenterid,step) + return web.Response(status=200) + + @request_mapping(path="/{fermenterid}/{stepid}", method="DELETE", auth_required=False) + async def http_deletestep(self, request): + """ + --- + description: Delete Fermenterstep + tags: + - Fermenter + parameters: + - name: "fermenterid" + in: "path" + description: "Fermenter ID" + required: true + type: "integer" + format: "int64" + - name: "stepid" + in: "path" + description: "Step ID" + required: true + type: "integer" + format: "int64" + responses: + "204": + description: successful operation + """ + stepid = request.match_info['stepid'] + fermenterid = request.match_info['fermenterid'] + await self.controller.delete_step(fermenterid,stepid) + return web.Response(status=204) + + @request_mapping(path="/movestep", method="PUT", auth_required=False) + async def http_movestep(self, request): + + """ + --- + description: Move Fermenterstep + tags: + - Fermenter + parameters: + - in: body + name: body + description: Created an kettle + required: false + schema: + type: object + properties: + fermenterid: + type: string + stepid: + type: string + direction: + type: "integer" + format: "int64" + responses: + "204": + description: successful operation + """ + data = await request.json() + await self.controller.move_step(data["fermenterid"],data["stepid"], data["direction"]) + return web.Response(status=204) \ No newline at end of file diff --git a/cbpi/http_endpoints/http_system.py b/cbpi/http_endpoints/http_system.py index 629077d..3ed8032 100644 --- a/cbpi/http_endpoints/http_system.py +++ b/cbpi/http_endpoints/http_system.py @@ -1,3 +1,4 @@ +import re from aiohttp import web from aiohttp import streamer from cbpi.job.aiohttp import get_scheduler_from_app @@ -7,7 +8,7 @@ from cbpi.utils import json_dumps from cbpi import __version__ import pathlib import os -import json +from cbpi.controller.system_controller import SystemController class SystemHttpEndpoints: