def scaled_dish(dish, factor): return classes.Dish( name=dish.name, variants=dish.variants, ingredients=[ classes.Ingredient( name=ingredient.name, quantity=ingredient.quantity * factor) if ingredient.quantity is not None else ingredient for ingredient in dish.ingredients ])
def subtract_from_shopping_list(shopping_list, sub, ingredient_types): subd = classes.NameDict(sub) for ingredient in shopping_list: sub_ingredient = subd.get(ingredient.name, None) if sub_ingredient is None: yield ingredient else: # Copy ing = classes.Ingredient(ingredient) pu = to_purchase_unit(sub_ingredient, ingredient_types) ing.quantity -= pu if ing.quantity and ing.quantity.magnitude > 0: yield ing
def loadIngredients(self): global ingredient files = os.listdir("ingredients/") ingredientsList = [] for i in files: archive = open("ingredients/" + i, "r") data = archive.readlines() ingredient = classes.Ingredient( str(data[0]).strip(), str(data[1]).strip(), str(data[2]).strip(), str(data[3]).strip(), eval(data[4]), eval(data[5]), eval(data[6])) ingredientsList.append(ingredient) return ingredientsList
def saveIngredient(self, widget, data): filename = string.translate(str(data[0]), None, '\'"¡!·$%&/()=?¿*^-\áóéúíñÑ´¨çÇ`+"') filename = string.replace(string.lower(filename), ' ', '_') newfile = open("ingredients/" + filename + ".ing", 'w') newfile.write(data[0] + "\n") # Name newfile.write(str(data[1]) + "\n") # Type newfile.write(str(data[2]) + "\n") # Group newfile.write(str(data[3]) + "\n") # Measure newfile.write(str(data[4]) + "\n") # Equivalents newfile.write(str(data[5]) + "\n") # Packages newfile.write(str(data[6]) + "\n") # Prices newfile.close() return classes.Ingredient( str(data[0]).strip(), str(data[1]).strip(), str(data[2]).strip(), str(data[3]).strip(), data[4], data[5], data[6])
def make_shopping_list(menu, ingredient_types): shopping_list = classes.NameDict() for menuitem in menu: ingredients = zip(menuitem.dish.ingredients, itertools.repeat(1)) for variant, count in menuitem.variants.iteritems(): ingredients.extend( zip(menuitem.dish.variants[variant], itertools.repeat(count))) for ingredient, count in ingredients: pu = to_purchase_unit(ingredient, ingredient_types) if not pu is None: pu *= count entry = shopping_list.get(ingredient.name) if entry: if not pu is None: entry.quantity += pu entry.sources.append(menuitem) else: entry = classes.Ingredient(ingredient_types[ingredient.name]) entry.quantity = pu entry.sources = [menuitem] shopping_list.append(entry) return shopping_list.values()