Gebinde verwalten - mit Einzahl und Mehrzahl
Bisher war die Auswahl eine fest im Frontend verdrahtete Liste und es gab nur eine Form: ueberall stand "3 Glas". Neu unter Verwaltung > Gebinde: anlegen, umbenennen, loeschen, jeweils mit Einzahl und Mehrzahl. Die eingebauten Gebinde lassen sich in der Schreibweise aendern, aber nicht loeschen; ein Gebinde, das ein Artikel verwendet, ebenfalls nicht. Der Artikel speichert weiterhin nur die Einzahl als Text - so bleiben vorhandene Artikel, Sicherungen und CSV-Dateien gueltig, und eine unbekannte Bezeichnung faellt schlicht auf die Einzahl zurueck. Deshalb zieht ein Umbenennen die Artikel mit; sonst zeigten sie auf eine Bezeichnung, die es nicht mehr gibt. Die Mehrzahl greift jetzt in Artikelliste, Artikelseite (Chargen und Gebinde- Auswahl), Auslagern und in allen Ablauf- und Einkaufslisten samt Startseite. Einheiten wie Gramm oder Liter bleiben unveraendert - die haben im Deutschen keine Mehrzahl. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from .config import get_settings
|
||||
from .models import Category, Role, Unit, UnitKind, User
|
||||
from .models import Category, PackageType, Role, Unit, UnitKind, User
|
||||
from .security import hash_password
|
||||
|
||||
# (Name, Art, Faktor zur kanonischen Basiseinheit)
|
||||
@@ -16,6 +16,39 @@ BUILTIN_UNITS: list[tuple[str, UnitKind, float]] = [
|
||||
]
|
||||
|
||||
|
||||
# Gebinde in Einzahl und Mehrzahl. Bewusst nur die gaengigen - eigene legt man
|
||||
# unter Verwaltung > Gebinde an. Wo Einzahl und Mehrzahl gleich lauten
|
||||
# ("2 Becher"), steht das hier ausdruecklich, damit es niemand fuer vergessen
|
||||
# haelt und "Bechers" daraus macht.
|
||||
BUILTIN_PACKAGE_TYPES: list[tuple[str, str]] = [
|
||||
("Packung", "Packungen"),
|
||||
("Glas", "Gläser"),
|
||||
("Flasche", "Flaschen"),
|
||||
("Dose", "Dosen"),
|
||||
("Tüte", "Tüten"),
|
||||
("Beutel", "Beutel"),
|
||||
("Becher", "Becher"),
|
||||
("Tube", "Tuben"),
|
||||
("Karton", "Kartons"),
|
||||
("Riegel", "Riegel"),
|
||||
("Rolle", "Rollen"),
|
||||
("Sack", "Säcke"),
|
||||
("Kiste", "Kisten"),
|
||||
("Bund", "Bund"),
|
||||
("Stück", "Stück"),
|
||||
]
|
||||
|
||||
|
||||
def ensure_builtin_package_types(db: Session) -> None:
|
||||
changed = False
|
||||
for singular, plural in BUILTIN_PACKAGE_TYPES:
|
||||
if not db.query(PackageType).filter(PackageType.singular == singular).first():
|
||||
db.add(PackageType(singular=singular, plural=plural, is_builtin=True))
|
||||
changed = True
|
||||
if changed:
|
||||
db.commit()
|
||||
|
||||
|
||||
def ensure_builtin_units(db: Session) -> None:
|
||||
changed = False
|
||||
for name, kind, factor in BUILTIN_UNITS:
|
||||
|
||||
Reference in New Issue
Block a user