123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- from src.models.recipe_model import recipe_model
- from src.models.ingredient_model import ingredient_model
- from src.models.nomenclature_group_model import nomenclature_group_model
- from src.models.measurement_unit_model import measurement_unit_model
- from src.models.nomenclature_model import nomenclature_model
- from src.settings.settings import settings
- from src.storage.storage import storage
- from src.validation.validator import validator
- #
- # Класс для обработки начало работы приложения
- #
- class start_factory:
- __options: settings = None
- __storage: storage = None
- __vtor = validator()
-
- def __init__(self, _options: settings,
- _storage: storage = None) -> None:
-
- self.__vtor.check_type(_options, settings)
- self.__vtor.check_type(_storage, storage)
- self.__options = _options
- self.__storage = _storage
- def __save(self, key:str, items: list):
- """
- Сохранить данные
- Args:
- key (str): ключ доступ
- items (list): список
- """
-
- self.__vtor.check_type(key, str)
-
- if self.__storage == None:
- self.__storage = storage()
-
- self.__storage.data[ key ] = items
-
-
-
- @property
- def storage(self):
- """
- Ссылка на объект хранилище данных
- Returns:
- _type_: _description_
- """
- return self.__storage
-
-
- @staticmethod
- def create_recipes():
- """
- Фабричный метод Создать список рецептов
- """
- result = []
- g = measurement_unit_model.create_g()
- pcs = measurement_unit_model.create_pcs()
- group = nomenclature_group_model("group")
- ingredients = [
- ingredient_model("Мука", nomenclature_model("Мука", "Мука пшеничная", g, group), 100, g),
- ingredient_model("Сахар", nomenclature_model("Сахар", "Сахарный песок", g, group), 80, g),
- ingredient_model("Масло", nomenclature_model("Масло", "Масло сливочное", g, group), 70, g),
- ingredient_model("Яйцо", nomenclature_model("Яйцо", "Яйцо куриное", pcs, group), 1, pcs),
- ingredient_model("Ванилин", nomenclature_model("Ванилин", "Ванилин продуктовый", g, group), 5, g)
- ]
- steps = [
- "Как испечь вафли хрустящие в вафельнице? Подготовьте необходимые продукты. Из данного количества у меня получилось 8 штук диаметром около 10 см.",
- "Масло положите в сотейник с толстым дном. Растопите его на маленьком огне на плите, на водяной бане либо в микроволновке.",
- "Добавьте в теплое масло сахар. Перемешайте венчиком до полного растворения сахара. От тепла сахар довольно быстро растает.",
- "Добавьте в масло яйцо. Предварительно все-таки проверьте масло, не горячее ли оно, иначе яйцо может свариться. Перемешайте яйцо с маслом до однородности.",
- "Всыпьте муку, добавьте ванилин.",
- "Перемешайте массу венчиком до состояния гладкого однородного теста.",
- "Разогрейте вафельницу по инструкции к ней. У меня очень старая, еще советских времен электровафельница. Она может и не очень красивая, но печет замечательно! Я не смазываю вафельницу маслом, в тесте достаточно жира, да и к ней уже давно ничего не прилипает. Но вы смотрите по своей модели. Выкладывайте тесто по столовой ложке. Можно класть немного меньше теста, тогда вафли будут меньше и их получится больше.",
- "Пеките вафли несколько минут до золотистого цвета. Осторожно откройте вафельницу, она очень горячая! Снимите вафлю лопаткой. Горячая она очень мягкая, как блинчик. Но по мере остывания становится твердой и хрустящей. Такие вафли можно свернуть трубочкой. Но делать это надо сразу же после выпекания, пока она мягкая и горячая, потом у вас ничего не получится, вафля поломается. Приятного аппетита!"
- ]
- result.append(recipe_model.create("Вафли хрустящие в вафельнице", ingredients, steps))
- return result
-
-
- def create(self):
- """
- В зависимости от настроек, сформировать начальную номенклатуру
- Returns:
- _type_: _description_
- """
-
- result = []
- if self.__options.is_first_run == True:
- self.__options.is_first_run = False
-
- # Формируем и зпоминаем номеклатуру
- res = self.create_recipes()
- ingredients = set()
- for x in res:
- for ing in x.ingredients:
- ingredients.add(ing)
- recipes = res.copy()
- nomenclatures = set()
- for ingredient in ingredients:
- nomenclatures.add(ingredient.nomenclature)
- result = nomenclatures
- munits = set([x.measurement_unit for x in nomenclatures])
- nomgroups = set([x.nomenclature_group for x in nomenclatures])
- self.__save(storage.nomenclature_key(), nomenclatures )
- self.__save(storage.measurement_unit_key(), munits)
- self.__save(storage.nomenclature_group_key(), nomgroups)
- self.__save(storage.ingredient_key(), ingredients)
- self.__save(storage.recipe_key(), recipes)
- return result
|