summaryrefslogtreecommitdiff
path: root/kitchen/views.py
AgeCommit message (Collapse)Author
2026-06-23Fix bulk-pantry-add crash on null unit (found in live MCP testing)Tom Flux
End-to-end testing (MCP client -> FastMCP -> Django) surfaced a 500: adding an item with an explicit `unit: null` (as add_to_pantry sends for items without a unit) hit a NOT NULL violation, because `item_data.get("unit", "items")` returns None when the key is present. - views.bulk_pantry_add: `item_data.get("unit") or "items"` — tolerate null/empty unit. - mcp_server add_to_pantry: omit quantity/unit from the payload when unset, so the API applies its own defaults. - test: bulk-add with unit/quantity = null returns 201 (25 pass). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23Phase 3a: close the Django API gaps for the MCP serverTom Flux
Backend prerequisites for the FastMCP service (mcp.md §6) — no model changes, no migration. - log_cook: accepts `rating`, validates via full_clean (enforces the exactly-one-recipe rule), and returns `used_ingredients` as a suggestion set instead of mutating the pantry. Auto-deduct path and _deduct_ingredient removed — pantry state changes only via set-state after the user confirms. - New POST /api/pantry/set-state/ — set in/low/out by ingredient name (alias-aware), optional location; registered before the router so the pantry detail route doesn't capture "set-state" as a pk. - what_can_i_cook: presence-based (exclude 'out', tolerate null quantity) so the API matcher agrees with the web one. - bulk-pantry-add: restocks an existing ingredient+location row to 'in' instead of duplicating; quantity is an optional int. Tests cover all four + that pantry `state` is serialized (24 pass). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22Simplify from claudeTom Flux
2026-04-02Add create-meta-recipe endpoint with nested slots/options/basesCaine
- POST /api/create-meta-recipe/ creates full meta-recipe in one call - PUT /api/create-meta-recipe/ updates existing (requires id) - Auto-resolves ingredients by name/alias, creates new if not found - Returns full nested response with _created_ingredients list - New writable serializers: MetaRecipeWriteSerializer, SlotWriteSerializer, etc.
2026-04-02Phase 2+3: bulk pantry add, smart shopping list, recipe URL importCaine
2026-04-02Add API: URLs, token auth, what-can-i-cook endpoint, log-cook with pantry ↵Caine
deduction, browsable API
2026-04-02Add DRF serializers, viewsets, what-can-i-cook endpoint, log-cook with ↵Caine
pantry deduction
2026-04-01Configure settings: add kitchen app, DRF, timezone, allowed hostsCaine