Saltar a contenido

Migraciones y seed

Migraciones (Flask-Migrate / Alembic)

Las migraciones viven en migrations/versions/ con numeración incremental (p. ej. 118_..., 127_padron_habitantes_territorio.py, 128_padron_habitantes_habitantes.py).

# Aplicar todas las migraciones pendientes
flask db upgrade

# Tras cambiar modelos: generar una nueva migración
flask db migrate -m "descripción del cambio"
flask db upgrade

Revisar la migración generada

Alembic autogenera un borrador que debe revisarse antes de aplicarlo (especialmente en cambios de tipo, índices o tablas particionadas como las de auditoría MOS).

Seed de datos iniciales

python seed.py

El sembrado crea/actualiza los datos base de arranque: entidad, roles RBAC, catálogo de permisos, roles funcionales y datos de ejemplo. Es idempotente en sus partes canónicas (permisos y roles).

Seed por módulo

Algunos módulos tienen su propio sembrado de permisos y roles, invocado desde el seed general o de forma específica. Ejemplo (Registro):

  • seed_permisos_registro() — crea/actualiza permisos registro:*.
  • crear_rol_jefe_registro(entidad_id) — rol "Jefe de Registro".
  • asignar_permisos_a_roles_base(entidad_id) — Jefe de Departamento, Colaborador.
  • seed_registro(entidad_id=None) — sembrado completo del módulo.

Orden recomendado

  1. flask db upgrade (esquema).
  2. python seed.py (datos base + permisos/roles).
  3. Sembrados específicos de catálogos externos si procede (p. ej. DIR3 vía POST /api/registro/dir3/seed o importación de CSV).

Catálogos externos

Catálogo Cómo se carga
DIR3 (organismos) Seed básico incluido o importación del CSV oficial MINHAP.
Códigos postales Módulo codigos_postales (catálogo global).
Callejero INE (Padrón) Importador CSV tolerante del módulo Padrón.