Einkauf: Abhaken legt Produkte in den Wagen, "Einkauf beenden" übernimmt sie

- Abgehakte Produkte bleiben auf der Einkaufsliste, rutschen durchgestrichen
  nach unten ("Im Wagen") und lassen sich zurücknehmen
- Button "Einkauf beenden (n)" verschiebt alle abgehakten Produkte auf einmal
  in den Vorrat derselben Liste (Mengen werden zusammengeführt)
- Haken wird gespeichert (Spalte checked, Migration ergänzt sie) und ist für
  alle sichtbar, die die Liste sehen; erneut hinzugefügte Produkte verlieren
  den Haken
- Einträge gleiten per View Transition an ihren neuen Platz (aus bei
  "Animation: aus")

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
guyg1474andClaude Opus 5.5 committed 2026-10-15 12:11:13 +02:00
1 parent b30acb652a
commit f0e17b06b5
6 files changed
+109 -13

No files matched your search

+9
View File
@@ -21,6 +21,7 @@ HOUSEHOLD_TABLE = """(
list_id INTEGER NOT NULL REFERENCES shopping_lists(id) ON DELETE CASCADE,
quantity REAL NOT NULL CHECK (quantity > 0),
unit TEXT NOT NULL DEFAULT 'stk' CHECK (unit IN ('stk', 'kg', 'l')),
checked INTEGER NOT NULL DEFAULT 0, -- Einkauf: im Wagen, wandert erst mit "Einkauf beenden" in den Vorrat
updated_at TEXT NOT NULL,
updated_by INTEGER REFERENCES users(id) ON DELETE SET NULL,
UNIQUE (list_id, key, list, unit)
@@ -294,6 +295,13 @@ def _migrate(conn) -> None:
conn.execute("DROP TABLE household_items_alt")
def _migrate_checked(conn) -> None:
# Einkauf ohne Haken-Spalte: ergänzen, bestehende Einträge sind nicht abgehakt
columns = {r["name"] for r in conn.execute("PRAGMA table_info(household_items)")}
if "checked" not in columns:
conn.execute("ALTER TABLE household_items ADD COLUMN checked INTEGER NOT NULL DEFAULT 0")
def _migrate_travel(conn) -> None:
# Reise-Städte aus einer Vorversion ohne Höhe/Zeitzone: Spalten ergänzen
columns = {r["name"] for r in conn.execute("PRAGMA table_info(travel_cities)")}
@@ -387,6 +395,7 @@ def init() -> None:
conn.execute("PRAGMA journal_mode = WAL")
conn.executescript(SCHEMA)
_migrate(conn)
_migrate_checked(conn)
_migrate_travel(conn)
_migrate_monitor_token(conn)
_migrate_kanban_categories(conn)