Olympus/backend/hermes/app/knowledge_seed.py
2026-07-03 18:48:40 +02:00

77 lines
1.8 KiB
Python

import logging
from sqlalchemy import select
from sqlalchemy.orm import Session
from app.models.knowledge import KnowledgeManufacturer
logger = logging.getLogger(__name__)
DEFAULT_MANUFACTURERS = [
"Stabo",
"President",
"Albrecht",
"Marconi",
"Rohde & Schwarz",
"HP",
"CRT",
"Alinco",
"Motorola",
"Team",
]
def _slugify(value: str) -> str:
normalized = value.strip().lower()
normalized = normalized.replace("&", "und")
normalized = normalized.replace("ß", "ss")
normalized = normalized.replace("ö", "oe")
normalized = normalized.replace("ä", "ae")
normalized = normalized.replace("ü", "ue")
parts = []
current = []
for char in normalized:
if char.isalnum():
current.append(char)
elif current:
parts.append("".join(current))
current = []
if current:
parts.append("".join(current))
return "-".join(parts)
def seed_knowledge_manufacturers(db: Session) -> None:
created_count = 0
existing = {
manufacturer.name.lower(): manufacturer
for manufacturer in db.scalars(select(KnowledgeManufacturer)).all()
}
for name in DEFAULT_MANUFACTURERS:
existing_manufacturer = existing.get(name.lower())
if existing_manufacturer:
if not existing_manufacturer.slug:
existing_manufacturer.slug = _slugify(name)
continue
manufacturer = KnowledgeManufacturer(
name=name,
slug=_slugify(name),
notes="Systemseitig initial angelegt",
)
db.add(manufacturer)
created_count += 1
db.commit()
logger.info(
"knowledge.manufacturers.seeded",
extra={"manufacturer_seed_created_count": created_count},
)