fix/AS-prosec-revertir-boolean (#483)
alembic seed para empresas ya existentes Reviewed-on: ADUANASOFT/anexo76#483 Co-authored-by: hreyes <hreyes@aduanasoft.com.mx> Co-committed-by: hreyes <hreyes@aduanasoft.com.mx>
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
"""seed sectors for existing companies
|
||||
|
||||
Siembra el catálogo de sectores PROSEC (a76.sectors) para todas las empresas
|
||||
existentes. Los sectores son por empresa y solo se sembraban dentro de
|
||||
_seed_company_data() al crear una empresa; las empresas que no pasaron por ese
|
||||
flujo (BD recreada o creadas por otra vía) quedaban sin sectores y el selector
|
||||
del frontend aparecía vacío. Idempotente: ON CONFLICT DO NOTHING.
|
||||
|
||||
Revision ID: e1f2a3b4c5d6
|
||||
Revises: c8d9e0f1a2b3
|
||||
Create Date: 2026-06-02 14:00:00.000000
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
from sqlalchemy import text
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from api.v1.modules.a76.general_catalogs.sectors.seed import seed as sectors_seed
|
||||
|
||||
revision: str = "e1f2a3b4c5d6"
|
||||
down_revision: Union[str, None] = "c8d9e0f1a2b3"
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
def format_value(val):
|
||||
if val is None or str(val).strip() == "" or str(val).upper() == "NONE":
|
||||
return "NULL"
|
||||
return f"'{str(val).replace(chr(39), chr(39) * 2)}'"
|
||||
|
||||
bind = op.get_bind()
|
||||
session = Session(bind=bind)
|
||||
companies = session.execute(
|
||||
text("SELECT tenant_id, id FROM a76.company WHERE deleted_at IS NULL")
|
||||
).fetchall()
|
||||
|
||||
for tenant_id, company_id in companies:
|
||||
values = ", ".join(
|
||||
[
|
||||
f"({format_value(key)}, {format_value(description)}, {str(authorized).upper()}, {tenant_id}, {company_id})"
|
||||
for key, description, authorized in sectors_seed
|
||||
]
|
||||
)
|
||||
if values:
|
||||
session.execute(
|
||||
text(
|
||||
f"""
|
||||
INSERT INTO a76.sectors (key, description, authorized, tenant_id, company_id)
|
||||
VALUES {values}
|
||||
ON CONFLICT (key, tenant_id, company_id) DO NOTHING;
|
||||
"""
|
||||
)
|
||||
)
|
||||
session.commit()
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
# Backfill de datos: no se eliminan sectores en el downgrade porque podrían
|
||||
# haberse editado/agregado manualmente tras la siembra. No-op intencional.
|
||||
pass
|
||||
Reference in New Issue
Block a user