neue Archivfunktion und Optimierung an Artikelbearbeitung

This commit is contained in:
2026-08-09 18:24:04 +02:00
parent dd51532533
commit b80e2d5a6c
23 changed files with 1185 additions and 77 deletions

View File

@@ -31,6 +31,13 @@ class ListOut(BaseModel):
may_share_public: bool
member_count: int
created_at: datetime
# Archivierung gilt je Person - dieselbe Liste kann bei einem
# Mitglied im Archiv liegen und beim anderen aktiv sein.
archived: bool = False
archived_at: datetime | None = None
# Nur beim Eigentümer gefüllt: Wann würde die Liste automatisch
# gelöscht? Die Frist läuft ausschließlich über sein Archivdatum.
delete_due_at: datetime | None = None
class MemberOut(BaseModel):
@@ -192,6 +199,10 @@ class ItemCreateIn(BaseModel):
class ItemUpdateIn(BaseModel):
# Artikel wechseln oder umbenennen. Welches von beidem geschieht,
# entscheidet der Server: Benutzt niemand sonst den bisherigen
# Artikel, wird er umbenannt - sonst haengt der Eintrag um.
article_name: str | None = Field(default=None, min_length=1, max_length=200)
market_id: str | None = Field(default=None, max_length=36)
category_id: str | None = Field(default=None, max_length=36)
count: int | None = Field(default=None, ge=1, le=999)
@@ -405,3 +416,24 @@ class PriceHint(BaseModel):
best_cents: int
spread_cents: int
prices: dict[str, int]
class ArticleSuggestion(BaseModel):
"""Ein Vorschlag beim Eintippen eines Artikelnamens.
Enthaelt die zuletzt verwendeten Angaben, damit ein Antippen die
Eingabefelder fuellt - uebernommen wird der Eintrag dadurch noch
nicht, es bleibt Zeit fuer Aenderungen.
"""
article_id: str
name: str
count: int | None = None
pack_size: Decimal | None = None
pack_unit: str | None = None
variant: str | None = None
market_id: str | None = None
category_id: str | None = None
# Wie oft in der beruecksichtigten Zeitspanne verwendet
times_used: int
last_used_at: datetime