Pantry move/expiry edit + smart shopping list with summary

- Move items between fridge↔freezer (freezer→fridge sets +7d or shelf life expiry, fridge→freezer clears expiry)
- Inline expiry date editor on fridge items (📅 button)
- Smart shopping list now shows recipe gaps (missing required slot ingredients)
- Summary card shows breakdown: X staple restocks, Y expiring, Z recipe gaps
This commit is contained in:
Caine
2026-04-02 23:18:01 +01:00
parent 726cb9d153
commit d0de1b44ea
6 changed files with 154 additions and 6 deletions
+7 -1
View File
@@ -8,9 +8,15 @@ urlpatterns = [
path("shopping/", views_htmx.shopping_page, name="app-shopping"),
path("log/", views_htmx.log_page, name="app-log"),
# HTMX partials
# HTMX partials — pantry
path("pantry/add/", views_htmx.pantry_add, name="app-pantry-add"),
path("pantry/<int:item_id>/delete/", views_htmx.pantry_delete, name="app-pantry-delete"),
path("pantry/<int:item_id>/move/", views_htmx.pantry_move, name="app-pantry-move"),
path("pantry/<int:item_id>/edit-expiry/", views_htmx.pantry_edit_expiry, name="app-pantry-edit-expiry"),
path("pantry/<int:item_id>/save-expiry/", views_htmx.pantry_save_expiry, name="app-pantry-save-expiry"),
path("pantry/cancel-edit/", views_htmx.pantry_cancel_edit, name="app-pantry-cancel-edit"),
# HTMX partials — shopping
path("shopping/generate/", views_htmx.shopping_generate, name="app-shopping-generate"),
path("shopping/<int:item_id>/toggle/", views_htmx.shopping_toggle, name="app-shopping-toggle"),
path("shopping/clear/", views_htmx.shopping_clear, name="app-shopping-clear"),