feat: catalogo dinamico de tipificaciones de hitos, matriz RBAC y desacoplamiento en modal de eventos

This commit is contained in:
Carlos Tello
2026-09-03 03:48:49 -03:00
parent 0c867e0031
commit 291e537574
13 changed files with 777 additions and 23 deletions
+31 -4
View File
@@ -76,7 +76,8 @@ def init_database():
'academic': 'read_write',
'import': 'read_write',
'optimizer': 'read_write',
'users': 'read_write'
'users': 'read_write',
'milestone_types': 'read_write'
}
},
{
@@ -91,7 +92,8 @@ def init_database():
'academic': 'read',
'import': 'none',
'optimizer': 'read',
'users': 'none'
'users': 'none',
'milestone_types': 'read'
}
},
{
@@ -106,7 +108,8 @@ def init_database():
'academic': 'read_write',
'import': 'read_write',
'optimizer': 'none',
'users': 'none'
'users': 'none',
'milestone_types': 'read_write'
}
},
{
@@ -121,7 +124,8 @@ def init_database():
'academic': 'read',
'import': 'none',
'optimizer': 'none',
'users': 'none'
'users': 'none',
'milestone_types': 'read'
}
}
]
@@ -215,6 +219,29 @@ def init_database():
db.session.add(b_virtual)
db.session.commit()
print("[OK] Edificios institucionales configurados con dirección oficial.")
# 6. Inicializar catálogo dinámico de tipificaciones de hitos académicos
print("[*] Verificando catálogo de tipificaciones de hitos académicos...")
from app.models.milestone import MilestoneType, BASE_MILESTONE_TYPES
for item in BASE_MILESTONE_TYPES:
mt = MilestoneType.query.filter_by(code=item['code']).first()
if not mt:
mt = MilestoneType(
name=item['name'],
code=item['code'],
color=item['color'],
description=item['description'],
sort_order=item['sort_order'],
is_active=True
)
db.session.add(mt)
else:
if not mt.color:
mt.color = item['color']
if not mt.sort_order:
mt.sort_order = item['sort_order']
db.session.commit()
print(f"[OK] Catálogo de tipificaciones inicializado ({MilestoneType.query.count()} tipos disponibles).")
print("\n[LISTO] Base de datos inicializada y lista para usar.")