fix(knowledge): fix manufacturer seed logging
This commit is contained in:
parent
612e1ad8ed
commit
22e54f212c
1 changed files with 50 additions and 29 deletions
|
|
@ -1,14 +1,13 @@
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
from sqlalchemy import select
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
from app.models.knowledge import KnowledgeManufacturer
|
from app.models.knowledge import KnowledgeManufacturer
|
||||||
from app.repositories.knowledge_repository import KnowledgeRepository
|
|
||||||
from app.services.knowledge_service import unique_slug
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
STANDARD_MANUFACTURERS = [
|
DEFAULT_MANUFACTURERS = [
|
||||||
"Stabo",
|
"Stabo",
|
||||||
"President",
|
"President",
|
||||||
"Albrecht",
|
"Albrecht",
|
||||||
|
|
@ -22,35 +21,57 @@ STANDARD_MANUFACTURERS = [
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
def seed_knowledge_manufacturers(db: Session) -> None:
|
def _slugify(value: str) -> str:
|
||||||
created = 0
|
normalized = value.strip().lower()
|
||||||
|
normalized = normalized.replace("&", "und")
|
||||||
|
normalized = normalized.replace("ß", "ss")
|
||||||
|
normalized = normalized.replace("ö", "oe")
|
||||||
|
normalized = normalized.replace("ä", "ae")
|
||||||
|
normalized = normalized.replace("ü", "ue")
|
||||||
|
|
||||||
for name in STANDARD_MANUFACTURERS:
|
parts = []
|
||||||
manufacturer = KnowledgeRepository.get_manufacturer_by_name(db, name)
|
current = []
|
||||||
if manufacturer is not None:
|
|
||||||
changed = False
|
for char in normalized:
|
||||||
if not manufacturer.slug:
|
if char.isalnum():
|
||||||
manufacturer.slug = unique_slug(
|
current.append(char)
|
||||||
db,
|
elif current:
|
||||||
manufacturer.name,
|
parts.append("".join(current))
|
||||||
lambda session, value: KnowledgeRepository.get_manufacturer_by_slug(
|
current = []
|
||||||
session,
|
|
||||||
value,
|
if current:
|
||||||
manufacturer.id,
|
parts.append("".join(current))
|
||||||
) is not None,
|
|
||||||
)
|
return "-".join(parts)
|
||||||
changed = True
|
|
||||||
if changed:
|
|
||||||
db.add(manufacturer)
|
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
|
continue
|
||||||
|
|
||||||
slug = unique_slug(
|
manufacturer = KnowledgeManufacturer(
|
||||||
db,
|
name=name,
|
||||||
name,
|
slug=_slugify(name),
|
||||||
lambda session, value: KnowledgeRepository.get_manufacturer_by_slug(session, value) is not None,
|
notes="Systemseitig initial angelegt",
|
||||||
)
|
)
|
||||||
db.add(KnowledgeManufacturer(name=name, slug=slug, website="", notes=""))
|
db.add(manufacturer)
|
||||||
created += 1
|
created_count += 1
|
||||||
|
|
||||||
db.commit()
|
db.commit()
|
||||||
logger.info("knowledge.manufacturers.seeded", extra={"created": created})
|
|
||||||
|
logger.info(
|
||||||
|
"knowledge.manufacturers.seeded",
|
||||||
|
extra={"manufacturer_seed_created_count": created_count},
|
||||||
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue