refactor: rebrand project to HartOMat

This commit is contained in:
2026-04-06 12:45:47 +02:00
parent fa7093307a
commit b795f0e6d6
95 changed files with 608 additions and 497 deletions
@@ -1,4 +1,4 @@
"""Schaeffler standard materials — add schaeffler_code column and seed 35 materials
"""HartOMat standard materials — add hartomat_code column and seed 35 materials
Revision ID: 019
Revises: 018
@@ -16,23 +16,23 @@ depends_on = None
def upgrade() -> None:
op.add_column("materials", sa.Column("schaeffler_code", sa.Integer(), nullable=True))
op.add_column("materials", sa.Column("hartomat_code", sa.Integer(), nullable=True))
from app.data.schaeffler_materials import SCHAEFFLER_MATERIALS
from app.data.hartomat_materials import HARTOMAT_MATERIALS
conn = op.get_bind()
now = datetime.utcnow().isoformat()
for mat in SCHAEFFLER_MATERIALS:
for mat in HARTOMAT_MATERIALS:
desc = mat["description"].replace("'", "''")
name = mat["name"].replace("'", "''")
conn.execute(sa.text(
f"INSERT INTO materials (id, name, description, source, schaeffler_code, created_at, updated_at) "
f"INSERT INTO materials (id, name, description, source, hartomat_code, created_at, updated_at) "
f"VALUES ('{uuid.uuid4()}', '{name}', '{desc}', '{mat['source']}', "
f"{mat['schaeffler_code']}, '{now}', '{now}') "
f"{mat['hartomat_code']}, '{now}', '{now}') "
f"ON CONFLICT (name) DO NOTHING"
))
def downgrade() -> None:
op.execute("DELETE FROM materials WHERE source = 'schaeffler_standard'")
op.drop_column("materials", "schaeffler_code")
op.execute("DELETE FROM materials WHERE source = 'hartomat_standard'")
op.drop_column("materials", "hartomat_code")
+1 -1
View File
@@ -28,7 +28,7 @@ def upgrade():
# Seed default tenant — all existing data will be assigned to this tenant
op.execute("""
INSERT INTO tenants (name, slug, is_active)
VALUES ('Schaeffler', 'schaeffler', true)
VALUES ('HartOMat', 'hartomat', true)
""")
+2 -2
View File
@@ -74,10 +74,10 @@ def upgrade():
),
)
# 2. Backfill with the default 'schaeffler' tenant
# 2. Backfill with the default 'hartomat' tenant
op.execute(
f"UPDATE {table} "
"SET tenant_id = (SELECT id FROM tenants WHERE slug = 'schaeffler')"
"SET tenant_id = (SELECT id FROM tenants WHERE slug = 'hartomat')"
)
# 3. Make NOT NULL now that every row has a value
@@ -20,7 +20,7 @@ _DEFAULT_CONFIG = """{
"max_concurrent_renders": 3,
"render_engines_allowed": ["cycles", "eevee"],
"max_order_size": 500,
"fallback_material": "SCHAEFFLER_059999_FailedMaterial",
"fallback_material": "HARTOMAT_059999_FailedMaterial",
"notifications_enabled": true,
"invoice_prefix": "INV"
}"""
@@ -0,0 +1,106 @@
"""Backfill persisted Schaeffler branding to HartOMat.
Revision ID: 063
Revises: 062
"""
from alembic import op
import sqlalchemy as sa
revision = "063"
down_revision = "062"
branch_labels = None
depends_on = None
def upgrade() -> None:
bind = op.get_bind()
inspector = sa.inspect(bind)
material_columns = {column["name"] for column in inspector.get_columns("materials")}
if "schaeffler_code" in material_columns and "hartomat_code" not in material_columns:
op.alter_column("materials", "schaeffler_code", new_column_name="hartomat_code")
op.execute(
"""
UPDATE materials
SET name = REPLACE(name, 'SCHAEFFLER_', 'HARTOMAT_')
WHERE name LIKE 'SCHAEFFLER_%'
"""
)
op.execute(
"""
UPDATE materials
SET source = 'hartomat_standard'
WHERE source = 'schaeffler_standard'
"""
)
op.execute(
"""
UPDATE tenants
SET name = 'HartOMat',
slug = 'hartomat'
WHERE lower(name) = 'schaeffler'
OR lower(slug) = 'schaeffler'
"""
)
op.execute(
"""
UPDATE tenants
SET tenant_config = jsonb_set(
tenant_config,
'{fallback_material}',
'\"HARTOMAT_059999_FailedMaterial\"'::jsonb,
true
)
WHERE tenant_config ? 'fallback_material'
"""
)
def downgrade() -> None:
bind = op.get_bind()
inspector = sa.inspect(bind)
material_columns = {column["name"] for column in inspector.get_columns("materials")}
op.execute(
"""
UPDATE materials
SET name = REPLACE(name, 'HARTOMAT_', 'SCHAEFFLER_')
WHERE name LIKE 'HARTOMAT_%'
"""
)
op.execute(
"""
UPDATE materials
SET source = 'schaeffler_standard'
WHERE source = 'hartomat_standard'
"""
)
op.execute(
"""
UPDATE tenants
SET name = 'Schaeffler',
slug = 'schaeffler'
WHERE lower(name) = 'hartomat'
OR lower(slug) = 'hartomat'
"""
)
op.execute(
"""
UPDATE tenants
SET tenant_config = jsonb_set(
tenant_config,
'{fallback_material}',
'\"SCHAEFFLER_059999_FailedMaterial\"'::jsonb,
true
)
WHERE tenant_config ? 'fallback_material'
"""
)
if "hartomat_code" in material_columns and "schaeffler_code" not in material_columns:
op.alter_column("materials", "hartomat_code", new_column_name="schaeffler_code")