Skip to content

Commit 4f5d64b

Browse files
committed
Add support for handling ingredients without amounts.
Introduced `IngredientWithAmountsDisabled` to process ingredients when amounts are not enabled. Updated the ingredient parsing logic to conditionally handle ingredients based on the `enable_amount` flag.
1 parent b80bbe1 commit 4f5d64b

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

source/ingredient.py

+7
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,10 @@ def is_ignored(name_of_ingredient: str, ignored_ingredients: list[Ingredient]) -
6464

6565
def to_dict(self) -> dict:
6666
return {"itemId": self.name, "spec": self.specification, "uuid": str(uuid.uuid4())}
67+
68+
69+
@dataclasses.dataclass
70+
class IngredientWithAmountsDisabled(Ingredient):
71+
@staticmethod
72+
def from_raw_data(raw_data: dict) -> Ingredient:
73+
return IngredientWithAmountsDisabled(name=raw_data["display"])

source/main.py

+12-11
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
from ingredient import Ingredient
99
from logger_mixin import LoggerMixin
1010

11+
from source.ingredient import IngredientWithAmountsDisabled
12+
1113
load_dotenv()
1214

1315
app = Flask(__name__)
@@ -30,17 +32,15 @@ def webhook_handler() -> str:
3032
ingredients_to_add = []
3133
ingredients_raw_data = data["content"]["recipe_ingredient"]
3234
for ingredient_raw_data in ingredients_raw_data:
33-
name_of_ingredient = ingredient_raw_data["food"]["name"]
34-
if Ingredient.is_ignored(name_of_ingredient, ignored_ingredients):
35-
logger.log.debug(f"Ignoring ingredient {name_of_ingredient}")
36-
continue
37-
38-
try:
39-
logger.log.debug(f"Parsing ingredient {ingredient_raw_data}")
35+
logger.log.debug(f"Parsing ingredient {ingredient_raw_data}")
36+
if enable_amount:
37+
name_of_ingredient = ingredient_raw_data["food"]["name"]
38+
if Ingredient.is_ignored(name_of_ingredient, ignored_ingredients):
39+
logger.log.debug(f"Ignoring ingredient {name_of_ingredient}")
40+
continue
4041
ingredients_to_add.append(Ingredient.from_raw_data(ingredient_raw_data))
41-
except ValueError:
42-
logger.log.warning(exc_info=True)
43-
continue
42+
else:
43+
ingredients_to_add.append(IngredientWithAmountsDisabled.from_raw_data(ingredient_raw_data))
4444

4545
logger.log.info(f"Adding ingredients to Bring: {ingredients_to_add}")
4646
loop.run_until_complete(bring_handler.add_items(ingredients_to_add))
@@ -60,7 +60,8 @@ def parse_ignored_ingredients() -> list[Ingredient]:
6060
ignored_ingredients_input = EnvironmentVariableGetter.get("IGNORED_INGREDIENTS")
6161
except RuntimeError:
6262
logger.log.info(
63-
'The variable IGNORED_INGREDIENTS is not set. All ingredients will be added. Consider adding something like "Salt,Pepper"'
63+
"The variable IGNORED_INGREDIENTS is not set. All ingredients will be added. "
64+
'Consider setting the variable to something like "Salt,Pepper"'
6465
)
6566
return []
6667

0 commit comments

Comments
 (0)