Simplify from claude

This commit is contained in:
Tom Flux
2026-06-22 22:50:48 +01:00
parent e65dd6f29c
commit 173e74b4a9
5 changed files with 96 additions and 101 deletions
+47
View File
@@ -0,0 +1,47 @@
"""
Shared kitchen helpers used by both the DRF API views (views.py) and the
HTMX views (views_htmx.py). Consolidated here to avoid cross-module
duplication and the views_htmx -> views runtime coupling.
"""
from decimal import Decimal
from .models import Ingredient, PantryItem
def find_ingredient(name):
"""Find ingredient by name or alias (case-insensitive)."""
# Exact name match
try:
return Ingredient.objects.get(name__iexact=name)
except Ingredient.DoesNotExist:
pass
# Search aliases (JSONField contains). Guard against a falsy aliases value.
for ingredient in Ingredient.objects.all():
if ingredient.aliases and any(a.lower() == name.lower() for a in ingredient.aliases):
return ingredient
return None
def get_pantry_total(ingredient_id):
"""Get total quantity of an ingredient across all pantry locations."""
total = Decimal("0")
for item in PantryItem.objects.filter(ingredient_id=ingredient_id, quantity__gt=0):
total += item.quantity
return total
def get_section_key(ingredient):
"""Determine the canonical (lowercase) shopping section key from an
ingredient's tags."""
tag_names = set(ingredient.tags.values_list("name", flat=True))
if "protein" in tag_names:
return "protein"
if "veg" in tag_names:
return "veg"
if "carb" in tag_names:
return "carbs"
if "dairy" in tag_names:
return "dairy"
return "other"