from flask import json, request from flask_classy import FlaskView, route from git import Repo, Git import sqlite3 from modules.app_config import cbpi from werkzeug.utils import secure_filename import pprint import time import os from modules.steps import Step,StepView import xml.etree.ElementTree class RESTImport(FlaskView): @route('/', methods=['POST']) def load(self): try: data = request.json name = data.get("name", "No Name") self.api.set_config_parameter("brew_name", name) chilstep_type = cbpi.get_config_parameter("step_chil", "ChilStep") mashstep_type = cbpi.get_config_parameter("step_mash", "MashStep") mash_kettle = cbpi.get_config_parameter("step_mash_kettle", None) boilstep_type = cbpi.get_config_parameter("step_boil", "BoilStep") boil_kettle = cbpi.get_config_parameter("step_boil_kettle", None) boil_temp = 100 if cbpi.get_config_parameter("unit", "C") == "C" else 212 # READ KBH DATABASE Step.delete_all() StepView().reset() for step in data.get("steps"): if step.get("type", None) == "MASH": Step.insert(**{"name": step.get("name","Mash Step"), "type": mashstep_type, "config": {"kettle": mash_kettle, "temp": step.get("temp",0), "timer": step.get("timer",0)}}) elif step.get("type", None) == "CHIL": Step.insert(**{"name": step.get("name","Chil"), "type": chilstep_type, "config": {"timer": step.get("timer")}}) elif step.get("type", None) == "BOIL": Step.insert(**{"name": step.get("name", "Boil"), "type": boilstep_type, "config": {"kettle": boil_kettle, "timer": step.get("timer"), "temp": boil_temp}}) else: pass self.api.emit("UPDATE_ALL_STEPS", Step.get_all()) self.api.notify(headline="Recipe %s loaded successfully" % name, message="") except Exception as e: self.api.notify(headline="Failed to load recipe", type="danger", message=str(e)) m = str(e.message) return (str(e), 500) return ('', 204) @cbpi.initalizer() def init(cbpi): RESTImport.api = cbpi RESTImport.register(cbpi.app, route_base='/api/recipe/import/v1')