def importBeerXMLRecipe(data): logger.debug("Start parsing recipe") try: tree = ElementTree.parse(data) except TypeError: tree = data except FileNotFoundError: tree = ElementTree.fromstring(data) except: raise recipe = Recipe() recipe.path = data presentation = tree.find('.//RECIPE') fermentables = tree.findall('.//FERMENTABLE') hops = tree.findall('.//HOP') levures = tree.findall('.//YEAST') misc = tree.findall('.//MISC') style = tree.find('.//STYLE') mash = tree.find('.//MASH') for element in presentation: if 'NAME' == element.tag: recipe.name = element.text logger.debug(" Recipe name: %s", recipe.name) if 'BREWER' == element.tag: recipe.brewer = element.text logger.debug(" Recipe brewer: %s", recipe.brewer) if 'TYPE' == element.tag: if "All Grain" == element.text: recipe.type = model.constants.RECIPE_TYPE_ALL_GRAIN elif "Partial Mash" == element.text: recipe.type = model.constants.RECIPE_TYPE_PARTIAL_MASH elif "Extract" == element.text: recipe.type = model.constants.RECIPE_TYPE_EXTRACT logger.debug(" Recipe type: %s", recipe.type) if "BATCH_SIZE" == element.tag: recipe.volume = float(element.text) logger.debug(" Recipe volume: %s", recipe.volume) if "EFFICIENCY" == element.tag: recipe.efficiency = float(element.text) logger.debug(" Recipe efficiency: %s", recipe.efficiency) if "BOIL_TIME" == element.tag: recipe.boil = float(element.text) logger.debug(" Recipe boil time: %s", recipe.boil) if "NOTES" == element.tag: recipe.recipeNotes = element.text logger.debug(" Recipe notes: %s", recipe.recipeNotes) try: for element in style: if "NAME" == element.tag: recipe.style = element.text except TypeError: recipe.style = "" try: recipe.mash = importBeerXMLMash(mash) except: pass for element in fermentables: recipe.listeFermentables.append(importBeerXMLFermentable(element)) for element in hops: recipe.listeHops.append(importBeerXMLHop(element)) for element in levures: recipe.listeYeasts.append(importBeerXMLYeast(element)) for element in misc: recipe.listeMiscs.append(importBeerXMLMisc(element)) logger.debug("End parsing recipe") return recipe
def importBeerXMLRecipe(data): logger.debug("Start parsing recipe") try: tree = ElementTree.parse(data) except TypeError: tree = data except IOError: tree = ElementTree.fromstring(data) except: raise recipe = Recipe() recipe.path = data presentation = tree.find('.//RECIPE') fermentables = tree.findall('.//FERMENTABLE') hops = tree.findall('.//HOP') levures = tree.findall('.//YEAST') misc = tree.findall('.//MISC') style = tree.find('.//STYLE') mash = tree.find('.//MASH') for element in presentation: if 'NAME' == element.tag: recipe.name = element.text logger.debug(" Recipe name: %s", recipe.name) if 'BREWER' == element.tag: recipe.brewer = element.text logger.debug(" Recipe brewer: %s", recipe.brewer) if 'TYPE' == element.tag: if "All Grain" == element.text: recipe.type = model.constants.RECIPE_TYPE_ALL_GRAIN elif "Partial Mash" == element.text: recipe.type = model.constants.RECIPE_TYPE_PARTIAL_MASH elif "Extract" == element.text: recipe.type = model.constants.RECIPE_TYPE_EXTRACT logger.debug(" Recipe type: %s", recipe.type) if "BATCH_SIZE" == element.tag: recipe.volume = float(element.text) logger.debug(" Recipe volume: %s", recipe.volume) if "EFFICIENCY" == element.tag: recipe.efficiency = float(element.text) logger.debug(" Recipe efficiency: %s", recipe.efficiency) if "BOIL_TIME" == element.tag: recipe.boil = float(element.text) logger.debug(" Recipe boil time: %s", recipe.boil) if "NOTES" == element.tag: recipe.recipeNotes = element.text logger.debug(" Recipe notes: %s", recipe.recipeNotes) try: for element in style: if "NAME" == element.tag: recipe.style = element.text except TypeError: recipe.style = "" try: recipe.mash = importBeerXMLMash(mash) except: pass for element in fermentables: recipe.listeFermentables.append(importBeerXMLFermentable(element)) for element in hops: recipe.listeHops.append(importBeerXMLHop(element)) for element in levures: recipe.listeYeasts.append(importBeerXMLYeast(element)) for element in misc: recipe.listeMiscs.append(importBeerXMLMisc(element)) logger.debug("End parsing recipe") return recipe
def importDictRecipe(dic): logger.debug("Start parsing dict") recipe = Recipe() recipe.path = dic['path'] recipe.name = dic['name'] recipe.brewer = dic['brewer'] recipe.style = dic['style'] if dic['type'] == "All Grain": recipe.type = RECIPE_TYPE_ALL_GRAIN elif dic['type'] == "Extract": recipe.type = RECIPE_TYPE_EXTRACT elif recipe.type == "Partial Mash": recipe.type = RECIPE_TYPE_PARTIAL_MASH recipe.volume = dic['volume'] recipe.boil = dic['boilTime'] recipe.efficiency = dic['efficiency'] for hop_dic in dic['hops']: hop = Hop() hop.name = hop_dic['name'] if hop_dic['form'] == "Pellet": hop.form = HOP_FORM_PELLET elif hop_dic['form'] == "Leaf": hop.form = HOP_FORM_LEAF elif hop_dic['form'] == "Plug": hop.form = HOP_FORM_PLUG hop.alpha = hop_dic['alpha'] hop.use = hop_dic['use'] hop.time = hop_dic['time'] hop.amount = hop_dic['amount'] recipe.listeHops.append(hop) for f_dic in dic['fermentables']: f = Fermentable() f.name = f_dic['name'] f.type = f_dic['type'] f.fyield = f_dic['fyield'] f.color = f_dic['color'] f.amount = f_dic['amount'] if f_dic['afterBoil'] == 'TRUE': f.useAfterBoil = True else: f.useAfterBoil = False f.recommendMash = f_dic['recoMash'] recipe.listeFermentables.append(f) for y_dic in dic['yeasts']: y = Yeast() y.name = y_dic['name'] y.productId = y_dic['product_id'] y.labo = y_dic['labo'] y.form = y_dic['form'] y.attenuation = y_dic['attenuation'] recipe.listeYeasts.append(y) for m_dic in dic['miscs']: m = Misc() m.name = m_dic['name'] m.amount = m_dic['amount'] m.type = m_dic['type'] m.use = m_dic['use'] m.time = m_dic['time'] recipe.listeMiscs.append(m) mash_dic = dic['mashProfile'] recipe.mash.name = mash_dic['name'] recipe.mash.ph = mash_dic['ph'] recipe.mash.spargeTemp = mash_dic['sparge'] recipe.mash.tunTemp = mash_dic['tunTemp'] for s_dic in mash_dic['steps']: s = MashStep() s.name = s_dic['name'] s.time = s_dic['time'] s.temp = s_dic['temp'] s.type = s_dic['type'] recipe.listeMashSteps.append(s) recipe.recipeNotes = dic['notes'] return recipe