diff --git a/mealie/db/data_initialization/init_units_foods.py b/mealie/db/data_initialization/init_units_foods.py index e284a819204e..e4a70fa751c3 100644 --- a/mealie/db/data_initialization/init_units_foods.py +++ b/mealie/db/data_initialization/init_units_foods.py @@ -1,34 +1,36 @@ -from mealie.schema.recipe import CreateIngredientUnit +import json +from pathlib import Path + from sqlalchemy.orm.session import Session from ..data_access_layer import DatabaseAccessLayer +CWD = Path(__file__).parent + + +def get_default_foods(): + with open(CWD.joinpath("resources", "foods", "en-us.json"), "r") as f: + foods = json.loads(f.read()) + return foods + def get_default_units(): - return [ - # Volume - CreateIngredientUnit(name="teaspoon", abbreviation="tsp"), - CreateIngredientUnit(name="tablespoon", abbreviation="tbsp"), - CreateIngredientUnit(name="fluid ounce", abbreviation="fl oz"), - CreateIngredientUnit(name="cup", abbreviation="cup"), - CreateIngredientUnit(name="pint", abbreviation="pt"), - CreateIngredientUnit(name="quart", abbreviation="qt"), - CreateIngredientUnit(name="gallon", abbreviation="gal"), - CreateIngredientUnit(name="milliliter", abbreviation="ml"), - CreateIngredientUnit(name="liter", abbreviation="l"), - # Mass Weight - CreateIngredientUnit(name="pound", abbreviation="lb"), - CreateIngredientUnit(name="ounce", abbreviation="oz"), - CreateIngredientUnit(name="gram", abbreviation="g"), - CreateIngredientUnit(name="kilogram", abbreviation="kg"), - CreateIngredientUnit(name="milligram", abbreviation="mg"), - ] + with open(CWD.joinpath("resources", "units", "en-us.json"), "r") as f: + units = json.loads(f.read()) + return units def default_recipe_unit_init(db: DatabaseAccessLayer, session: Session) -> None: for unit in get_default_units(): try: db.ingredient_units.create(session, unit) - print("Ingredient Unit Committed") + print("Ingredient Unit Created") + except Exception as e: + print(e) + + for food in get_default_foods(): + try: + db.ingredient_foods.create(session, food) + print("Ingredient Food Created") except Exception as e: print(e) diff --git a/mealie/db/data_initialization/resources/foods/en-us.json b/mealie/db/data_initialization/resources/foods/en-us.json new file mode 100644 index 000000000000..ef89e28833fa --- /dev/null +++ b/mealie/db/data_initialization/resources/foods/en-us.json @@ -0,0 +1,914 @@ +[ + { + "name": "acorn squash", + "description": "" + }, + { + "name": "alfalfa sprouts", + "description": "" + }, + { + "name": "anchovies", + "description": "" + }, + { + "name": "apples", + "description": "" + }, + { + "name": "artichoke", + "description": "" + }, + { + "name": "arugula", + "description": "" + }, + { + "name": "asparagus", + "description": "" + }, + { + "name": "aubergine", + "description": "" + }, + { + "name": "avocado", + "description": "" + }, + { + "name": "bacon", + "description": "" + }, + { + "name": "baking powder", + "description": "" + }, + { + "name": "baking soda", + "description": "" + }, + { + "name": "baking sugar", + "description": "" + }, + { + "name": "bar sugar", + "description": "" + }, + { + "name": "basil", + "description": "" + }, + { + "name": "bell peppers", + "description": "" + }, + { + "name": "blackberries", + "description": "" + }, + { + "name": "brassicas ", + "description": "" + }, + { + "name": "bok choy", + "description": "" + }, + { + "name": "broccoflower", + "description": "" + }, + { + "name": "broccoli", + "description": "" + }, + { + "name": "broccolini", + "description": "" + }, + { + "name": "broccoli rabe", + "description": "" + }, + { + "name": "brussels sprouts", + "description": "" + }, + { + "name": "cabbage", + "description": "" + }, + { + "name": "cauliflower", + "description": "" + }, + { + "name": "chinese leaves", + "description": "" + }, + { + "name": "collard greens", + "description": "" + }, + { + "name": "kohlrabi", + "description": "" + }, + { + "name": "bread", + "description": "" + }, + { + "name": "breadfruit", + "description": "" + }, + { + "name": "broad beans", + "description": "" + }, + { + "name": "brown sugar", + "description": "" + }, + { + "name": "brussels sprouts", + "description": "" + }, + { + "name": "butter", + "description": "" + }, + { + "name": "butternut pumpkin", + "description": "" + }, + { + "name": "butternut squash", + "description": "" + }, + { + "name": "cactus, edible", + "description": "" + }, + { + "name": "calabrese", + "description": "" + }, + { + "name": "cannabis", + "description": "" + }, + { + "name": "capsicum", + "description": "" + }, + { + "name": "caraway", + "description": "" + }, + { + "name": "carrot", + "description": "" + }, + { + "name": "castor sugar", + "description": "" + }, + { + "name": "cayenne pepper", + "description": "" + }, + { + "name": "celeriac", + "description": "" + }, + { + "name": "celery", + "description": "" + }, + { + "name": "cereal grains", + "description": "" + }, + { + "name": "rice", + "description": "" + }, + { + "name": "chard", + "description": "" + }, + { + "name": "cheese", + "description": "" + }, + { + "name": "chicory", + "description": "" + }, + { + "name": "chilli peppers", + "description": "" + }, + { + "name": "chinese leaves", + "description": "" + }, + { + "name": "chives", + "description": "" + }, + { + "name": "chocolate", + "description": "" + }, + { + "name": "cilantro", + "description": "" + }, + { + "name": "cinnamon", + "description": "" + }, + { + "name": "clarified butter", + "description": "" + }, + { + "name": "coconut", + "description": "" + }, + { + "name": "coconut milk", + "description": "" + }, + { + "name": "coffee", + "description": "" + }, + { + "name": "confectioners' sugar", + "description": "" + }, + { + "name": "coriander", + "description": "" + }, + { + "name": "corn", + "description": "" + }, + { + "name": "corn syrup", + "description": "" + }, + { + "name": "cottonseed oil", + "description": "" + }, + { + "name": "courgette", + "description": "" + }, + { + "name": "cream of tartar", + "description": "" + }, + { + "name": "cucumber", + "description": "" + }, + { + "name": "cumin", + "description": "" + }, + { + "name": "daikon", + "description": "" + }, + { + "name": "dairy products and dairy substitutes", + "description": "" + }, + { + "name": "eggs", + "description": "" + }, + { + "name": "ghee", + "description": "" + }, + { + "name": "milk", + "description": "" + }, + { + "name": "dandelion", + "description": "" + }, + { + "name": "demerara sugar", + "description": "" + }, + { + "name": "dough", + "description": "" + }, + { + "name": "edible cactus", + "description": "" + }, + { + "name": "eggplant", + "description": "" + }, + { + "name": "endive", + "description": "" + }, + { + "name": "fats", + "description": "" + }, + { + "name": "spek", + "description": "" + }, + { + "name": "fava beans", + "description": "" + }, + { + "name": "fiddlehead", + "description": "" + }, + { + "name": "fish", + "description": "" + }, + { + "name": "catfish ", + "description": "" + }, + { + "name": "cod", + "description": "" + }, + { + "name": "salt cod", + "description": "" + }, + { + "name": "salmon", + "description": "" + }, + { + "name": "skate", + "description": "" + }, + { + "name": "stockfish", + "description": "" + }, + { + "name": "trout", + "description": "" + }, + { + "name": "tuna", + "description": "" + }, + { + "name": "five spice powder", + "description": "" + }, + { + "name": "flour", + "description": "" + }, + { + "name": "frisee", + "description": "" + }, + { + "name": "fructose", + "description": "" + }, + { + "name": "fruit", + "description": "" + }, + { + "name": "apple", + "description": "" + }, + { + "name": "oranges", + "description": "" + }, + { + "name": "pear", + "description": "" + }, + { + "name": "tomato", + "description": "" + }, + { + "name": "fruit sugar", + "description": "" + }, + { + "name": "garam masala", + "description": "" + }, + { + "name": "garlic", + "description": "" + }, + { + "name": "gem squash", + "description": "" + }, + { + "name": "ginger", + "description": "" + }, + { + "name": "giblets", + "description": "" + }, + { + "name": "grains", + "description": "" + }, + { + "name": "maize", + "description": "" + }, + { + "name": "sweetcorn", + "description": "" + }, + { + "name": "teff", + "description": "" + }, + { + "name": "grape seed oil", + "description": "" + }, + { + "name": "green onion", + "description": "" + }, + { + "name": "heart of palm", + "description": "" + }, + { + "name": "hemp", + "description": "" + }, + { + "name": "herbs", + "description": "" + }, + { + "name": "oregano", + "description": "" + }, + { + "name": "parsley", + "description": "" + }, + { + "name": "honey", + "description": "" + }, + { + "name": "horse", + "description": "" + }, + { + "name": "icing sugar", + "description": "" + }, + { + "name": "isomalt", + "description": "" + }, + { + "name": "jackfruit", + "description": "" + }, + { + "name": "jaggery", + "description": "" + }, + { + "name": "jams", + "description": "" + }, + { + "name": "jellies", + "description": "" + }, + { + "name": "jerusalem artichoke", + "description": "" + }, + { + "name": "jicama", + "description": "" + }, + { + "name": "kale", + "description": "" + }, + { + "name": "kumara", + "description": "" + }, + { + "name": "leavening agents", + "description": "" + }, + { + "name": "leek", + "description": "" + }, + { + "name": "legumes", + "description": "" + }, + { + "name": "peas", + "description": "" + }, + { + "name": "beans", + "description": "" + }, + { + "name": "lentils", + "description": "" + }, + { + "name": "lemongrass", + "description": "" + }, + { + "name": "lettuce", + "description": "" + }, + { + "name": "liver", + "description": "" + }, + { + "name": "maple syrup", + "description": "" + }, + { + "name": "meat", + "description": "" + }, + { + "name": "mortadella", + "description": "" + }, + { + "name": "mushroom", + "description": "" + }, + { + "name": "white mushroom", + "description": "" + }, + { + "name": "mussels", + "description": "" + }, + { + "name": "nori", + "description": "" + }, + { + "name": "nutmeg", + "description": "" + }, + { + "name": "nutritional yeast flakes", + "description": "" + }, + { + "name": "nuts", + "description": "" + }, + { + "name": "nanaimo bar mix", + "description": "" + }, + { + "name": "octopuses", + "description": "" + }, + { + "name": "oils", + "description": "" + }, + { + "name": "olive oil", + "description": "" + }, + { + "name": "okra", + "description": "" + }, + { + "name": "olive", + "description": "" + }, + { + "name": "onion family", + "description": "" + }, + { + "name": "onion", + "description": "" + }, + { + "name": "scallion", + "description": "" + }, + { + "name": "shallot", + "description": "" + }, + { + "name": "spring onion", + "description": "" + }, + { + "name": "orange blossom water", + "description": "" + }, + { + "name": "oysters", + "description": "" + }, + { + "name": "panch puran", + "description": "" + }, + { + "name": "paprika", + "description": "" + }, + { + "name": "parsnip", + "description": "" + }, + { + "name": "pepper", + "description": "" + }, + { + "name": "peppers", + "description": "" + }, + { + "name": "plantain", + "description": "" + }, + { + "name": "pineapple", + "description": "" + }, + { + "name": "poppy seeds", + "description": "" + }, + { + "name": "potatoes", + "description": "" + }, + { + "name": "poultry", + "description": "" + }, + { + "name": "powdered sugar", + "description": "" + }, + { + "name": "pumpkin", + "description": "" + }, + { + "name": "pumpkin seeds", + "description": "" + }, + { + "name": "radish", + "description": "" + }, + { + "name": "rape", + "description": "" + }, + { + "name": "raw sugar", + "description": "" + }, + { + "name": "refined sugar", + "description": "" + }, + { + "name": "rice flour", + "description": "" + }, + { + "name": "rock sugar", + "description": "" + }, + { + "name": "rum", + "description": "" + }, + { + "name": "salt", + "description": "" + }, + { + "name": "seafood", + "description": "" + }, + { + "name": "seeds", + "description": "" + }, + { + "name": "sesame seeds", + "description": "" + }, + { + "name": "sunflower seeds", + "description": "" + }, + { + "name": "soda", + "description": "" + }, + { + "name": "soda, baking", + "description": "" + }, + { + "name": "soybean", + "description": "" + }, + { + "name": "spaghetti squash", + "description": "" + }, + { + "name": "spices", + "description": "" + }, + { + "name": "five spice powder", + "description": "" + }, + { + "name": "spinach", + "description": "" + }, + { + "name": "squash family", + "description": "" + }, + { + "name": "squash", + "description": "" + }, + { + "name": "zucchini", + "description": "" + }, + { + "name": "sugar", + "description": "" + }, + { + "name": "caster sugar", + "description": "" + }, + { + "name": "granulated sugar", + "description": "" + }, + { + "name": "superfine sugar", + "description": "" + }, + { + "name": "turbanado sugar", + "description": "" + }, + { + "name": "unrefined sugar", + "description": "" + }, + { + "name": "white sugar", + "description": "" + }, + { + "name": "sweet potato", + "description": "" + }, + { + "name": "sweeteners", + "description": "" + }, + { + "name": "cane sugar", + "description": "" + }, + { + "name": "tahini", + "description": "" + }, + { + "name": "tubers", + "description": "" + }, + { + "name": "potato", + "description": "" + }, + { + "name": "sunchoke", + "description": "" + }, + { + "name": "taro", + "description": "" + }, + { + "name": "yam", + "description": "" + }, + { + "name": "turnip", + "description": "" + }, + { + "name": "vanilla", + "description": "" + }, + { + "name": "vegetables", + "description": "" + }, + { + "name": "brassicas", + "description": "" + }, + { + "name": "fiddlehead fern", + "description": "" + }, + { + "name": "ful", + "description": "" + }, + { + "name": "legumes ", + "description": "" + }, + { + "name": "tomato ", + "description": "" + }, + { + "name": "watercress", + "description": "" + }, + { + "name": "watermelon", + "description": "" + }, + { + "name": "xanthan gum", + "description": "" + }, + { + "name": "yeast", + "description": "" + } +] \ No newline at end of file diff --git a/mealie/db/data_initialization/resources/units/en-us.json b/mealie/db/data_initialization/resources/units/en-us.json new file mode 100644 index 000000000000..0f82e1924c6a --- /dev/null +++ b/mealie/db/data_initialization/resources/units/en-us.json @@ -0,0 +1,86 @@ +[ + { + "name": "teaspoon", + "description": "", + "fraction": true, + "abbreviation": "tsp" + }, + { + "name": "tablespoon", + "description": "", + "fraction": true, + "abbreviation": "tbsp" + }, + { + "name": "cup", + "description": "", + "fraction": true, + "abbreviation": "cup" + }, + { + "name": "fluid ounce", + "description": "", + "fraction": true, + "abbreviation": "fl oz" + }, + { + "name": "pint", + "description": "", + "fraction": true, + "abbreviation": "pt" + }, + { + "name": "quart", + "description": "", + "fraction": true, + "abbreviation": "qt" + }, + { + "name": "gallon", + "description": "", + "fraction": true, + "abbreviation": "gal" + }, + { + "name": "milliliter", + "description": "", + "fraction": true, + "abbreviation": "ml" + }, + { + "name": "liter", + "description": "", + "fraction": true, + "abbreviation": "l" + }, + { + "name": "pound", + "description": "", + "fraction": true, + "abbreviation": "lb" + }, + { + "name": "ounce", + "description": "", + "fraction": true, + "abbreviation": "oz" + }, + { + "name": "gram", + "description": "", + "fraction": true, + "abbreviation": "g" + }, + { + "name": "kilogram", + "description": "", + "fraction": true, + "abbreviation": "kg" + }, + { + "name": "milligram", + "description": "", + "fraction": true, + "abbreviation": "mg" + } +] \ No newline at end of file diff --git a/mealie/db/init_db.py b/mealie/db/init_db.py index 70b4ca4759e4..2b95ee76ad10 100644 --- a/mealie/db/init_db.py +++ b/mealie/db/init_db.py @@ -5,7 +5,7 @@ from mealie.db.data_initialization.init_units_foods import default_recipe_unit_i from mealie.db.database import db from mealie.db.db_setup import create_session, engine from mealie.db.models._model_base import SqlAlchemyBase -from mealie.schema.admin import SiteSettings, SiteTheme +from mealie.schema.admin import SiteSettings from mealie.services.events import create_general_event from sqlalchemy.orm import Session @@ -24,34 +24,11 @@ def init_db(session: Session = None) -> None: if not session: session = create_session() - default_group_init(session) - default_settings_init(session) - default_theme_init(session) - default_user_init(session) - - default_recipe_unit_init(db, session) - - session.close() - - -def default_theme_init(session: Session): - default_themes = [ - SiteTheme().dict(), - { - "name": "Dark", - "colors": { - "primary": "#424242", - "accent": "#455A64", - "secondary": "#00796B", - "success": "#43A047", - "info": "#1976D2", - "warning": "#FF6F00", - "error": "#EF5350", - }, - }, - ] - for theme in default_themes: - db.themes.create(session, theme) + with session: + default_group_init(session) + default_settings_init(session) + default_user_init(session) + default_recipe_unit_init(db, session) def default_settings_init(session: Session): @@ -68,6 +45,7 @@ def default_group_init(session: Session): def default_user_init(session: Session): default_user = { "full_name": "Change Me", + "username": "admin", "email": settings.DEFAULT_EMAIL, "password": get_password_hash(settings.DEFAULT_PASSWORD), "group": settings.DEFAULT_GROUP,