"""Stammdaten vorbefüllen: Kategorien und Grössen. Läuft beim Start und legt nur an, was fehlt - so gehen von Hand ergänzte Einträge bei einem Neustart nicht verloren. """ from sqlalchemy import select from sqlalchemy.orm import Session from app.models import Groesse, Kategorie KATEGORIEN = [ ("Hosen", "hosen"), ("Oberteile", "oberteile"), ("Pullover", "pullover"), ("Jacken", "jacken"), ("Kleider & Röcke", "kleider-roecke"), ("Schuhe", "schuhe"), ("Unterwäsche & Socken", "unterwaesche-socken"), ("Schlafanzüge", "schlafanzuege"), ("Mützen & Handschuhe", "muetzen-handschuhe"), ("Sonstiges", "sonstiges"), ] # Reihenfolge ausdrücklich vergeben. Als Text sortiert stünde "104" vor # "56" - genau der Grund für die eigene Tabelle. GROESSEN = [ # Babys und Kleinkinder (Körpergrösse in cm) *[(str(cm), i) for i, cm in enumerate(range(50, 105, 6), start=10)], # Kinder *[(f"{cm}/{cm + 6}", 100 + i) for i, cm in enumerate(range(98, 170, 12))], *[(str(cm), 200 + i) for i, cm in enumerate(range(104, 182, 6))], # Schuhe *[(f"Schuh {nr}", 300 + i) for i, nr in enumerate(range(16, 41))], ] def stammdaten_anlegen(db: Session) -> None: vorhanden = set(db.scalars(select(Kategorie.slug))) for name, slug in KATEGORIEN: if slug not in vorhanden: db.add(Kategorie(name=name, slug=slug)) bekannt = set(db.scalars(select(Groesse.label))) for label, sort_order in GROESSEN: if label not in bekannt: db.add(Groesse(label=label, sort_order=sort_order)) bekannt.add(label) db.commit()