From 6ac93e52127c6eaca7b4243e3f094d1bf55f06d0 Mon Sep 17 00:00:00 2001 From: avollkopf <43980694+avollkopf@users.noreply.github.com> Date: Mon, 7 Mar 2022 16:43:00 +0100 Subject: [PATCH] fix for stepid on load recipe/addstep --- cbpi/__init__.py | 2 +- cbpi/api/step.py | 9 ------- cbpi/controller/fermentation_controller.py | 31 ++++++++++++++-------- cbpi/http_endpoints/http_fermentation.py | 4 +-- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/cbpi/__init__.py b/cbpi/__init__.py index c58b6d8..cee5728 100644 --- a/cbpi/__init__.py +++ b/cbpi/__init__.py @@ -1 +1 @@ -__version__ = "4.0.2.0.a16" +__version__ = "4.0.2.0.a17" diff --git a/cbpi/api/step.py b/cbpi/api/step.py index a9d6d19..bf30778 100644 --- a/cbpi/api/step.py +++ b/cbpi/api/step.py @@ -117,15 +117,6 @@ class CBPiStep(CBPiBase): def __str__(self): return "name={} props={}, type={}".format(self.name, self.props, self.__class__.__name__) -#class CBPiFermentationStep(CBPiStep): - -# def __init__(self, cbpi, fermenter, step, props, on_done) -> None: -# self.fermenter = fermenter -# id = step.get("id") -# name=step.get("name") -# self.step=step -# super().__init__(cbpi, id, name, props, on_done) - class CBPiFermentationStep(CBPiBase): def __init__(self, cbpi, fermenter, step, props, on_done) -> None: diff --git a/cbpi/controller/fermentation_controller.py b/cbpi/controller/fermentation_controller.py index 3a89dea..d0a5009 100644 --- a/cbpi/controller/fermentation_controller.py +++ b/cbpi/controller/fermentation_controller.py @@ -238,16 +238,16 @@ class FermentationController: with open(self.path, "w") as file: json.dump(data, file, indent=4, sort_keys=True) - async def create_step(self, id, item): + def create_step(self, id, item): try: stepid = shortuuid.uuid() - props = item.get("props") + item['id'] = stepid status = StepState("I") type = item.get("type") name = item.get("name") + endtime = item.get("endtime", 0) props = Props(item.get("props")) fermenter = self._find_by_id(id) - try: type_cfg = self.steptypes.get(type) clazz = type_cfg.get("class") @@ -255,13 +255,8 @@ class FermentationController: except Exception as e: logging.warning("Failed to create step instance %s - %s" % (id, e)) instance = None - step = FermenterStep(id=stepid, name=name, fermenter=fermenter, props=props, type=type, status=status, instance=instance) + step = FermenterStep(id=stepid, name=name, fermenter=fermenter, props=props, type=type, status=status, endtime=endtime, instance=instance) - - - fermenter.steps.append(step) - self.save() - self.push_update("fermenterstepupdate") return step except Exception as e: self.logger.error(e) @@ -546,18 +541,32 @@ class FermentationController: except: pass fermenter = self._find_by_id(fermenterid) + def add_runtime_data(item): item["status"] = "I" item["endtime"] = 0 item["id"] = shortuuid.uuid() item["props"]["Sensor"] = fermenter.sensor + list(map(lambda item: add_runtime_data(item), data.get("steps"))) fermenter.description = data['basic']['desc'] if name is not None: fermenter.brewname = name else: fermenter.brewname = data['basic']['name'] - fermenter.steps=[] await self.update(fermenter) + fermenter.steps=[] for item in data.get("steps"): - await self.create_step(fermenterid, item) + fermenter.steps.append(self.create_step(fermenterid, item)) + + self.save() + self.push_update("fermenterstepupdate") + + async def add_step(self, fermenterid, newstep): + fermenter = self._find_by_id(fermenterid) + step = self.create_step(fermenterid, newstep) + fermenter.steps.append(step) + self.save() + self.push_update("fermenterstepupdate") + return step + \ No newline at end of file diff --git a/cbpi/http_endpoints/http_fermentation.py b/cbpi/http_endpoints/http_fermentation.py index 945743c..81c4d89 100644 --- a/cbpi/http_endpoints/http_fermentation.py +++ b/cbpi/http_endpoints/http_fermentation.py @@ -313,8 +313,8 @@ class FermentationHttpEndpoints(): data = await request.json() fermenterid= request.match_info['id'] - newstep = {"name": data.get("name"), "props": data.get("props", {}), "type": data.get("type")} - response_data = await self.controller.create_step(fermenterid,newstep) + newstep = {"name": data.get("name"), "props": data.get("props", {}), "endtime": 0, "type": data.get("type")} + response_data = await self.controller.add_step(fermenterid,newstep) return web.json_response(data=response_data.to_dict()) @request_mapping(path="/{fermenterid}/{stepid}", method="PUT", auth_required=False)