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

@@ -148,6 +148,12 @@ class ShoppingList(Base):
)
deleted_at: Mapped[datetime | None] = mapped_column(DateTime, default=None)
# Vorwarnungen vor der automatischen Loeschung. Getrennt vermerkt,
# damit jede Stufe genau einmal verschickt wird - eine taegliche
# Erinnerung waere Belaestigung statt Warnung.
warn_7d_at: Mapped[datetime | None] = mapped_column(DateTime, default=None)
warn_1d_at: Mapped[datetime | None] = mapped_column(DateTime, default=None)
members: Mapped[list["ListMember"]] = relationship(
back_populates="shopping_list", cascade="all, delete-orphan"
)
@@ -168,6 +174,14 @@ class ListMember(Base):
# und widerrufen. Der Eigentuemer hat es immer, alle anderen nur,
# wenn er es ausdruecklich erteilt.
may_share_public: Mapped[bool] = mapped_column(Boolean, default=False)
# Archivierung ist eine Eigenschaft der MITGLIEDSCHAFT, nicht der
# Liste: Wer eine gemeinsame Liste nicht mehr braucht, soll sie aus
# seiner Uebersicht nehmen koennen, ohne sie den anderen wegzunehmen.
archived_at: Mapped[datetime | None] = mapped_column(DateTime, default=None)
# Grundlage der automatischen Archivierung - je Person getrennt.
last_opened_at: Mapped[datetime | None] = mapped_column(DateTime, default=None)
joined_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.now())
shopping_list: Mapped[ShoppingList] = relationship(back_populates="members")