feat(sprint4): completar optimizador heuristico concurrente, integracion Spring Boot, correccion de login y fixes visuales

This commit is contained in:
Carlos Tello
2026-09-05 02:20:47 -03:00
parent dd93b8c07a
commit 69d545b718
17 changed files with 1021 additions and 91 deletions
+64 -31
View File
@@ -175,37 +175,70 @@ def init_database():
db.session.commit()
print("[OK] Roles y matriz de permisos configurados correctamente.")
# 4. Verificar o crear usuario administrador inicial
print("[*] Verificando usuario administrador inicial...")
admin = User.query.filter_by(email="admin@edu-space.com").first()
if not admin:
admin = User(
email="admin@edu-space.com",
name="System Administrator",
role="ADMIN",
role_id=admin_role.id if admin_role else None,
is_active=True,
preferred_language="es",
theme_preference="auto"
)
admin.set_password("admin123")
db.session.add(admin)
db.session.commit()
print("[OK] Usuario inicial creado exitosamente:")
print(" Email: admin@edu-space.com")
print(" Password: admin123")
print(f" Rol: {admin_role.name if admin_role else 'ADMIN'}")
else:
# Sincronizar rol y atributos del admin existente si faltan
if admin_role and admin.role_id != admin_role.id:
admin.role_id = admin_role.id
admin.role = "ADMIN"
if not admin.preferred_language:
admin.preferred_language = "es"
if not admin.theme_preference:
admin.theme_preference = "auto"
db.session.commit()
print(f"[INFO] El usuario admin (admin@edu-space.com) esta activo y vinculado al rol '{admin_role.name if admin_role else 'ADMIN'}'.")
# 4. Verificar o crear usuarios institucionales de cada rol
print("[*] Verificando usuarios institucionales y credenciales...")
roles_by_name = {r.name: r for r in Role.query.all()}
institutional_users = [
{
'email': 'admin@edu-space.com',
'name': 'Administrador del Sistema',
'role_name': 'Admin',
'role_code': 'ADMIN'
},
{
'email': 'bedelia@edu-space.com',
'name': 'Operador de Bedelía',
'role_name': 'Bedelia',
'role_code': 'BEDELIA'
},
{
'email': 'docente@edu-space.com',
'name': 'Profesor Titular',
'role_name': 'Docente',
'role_code': 'DOCENTE'
},
{
'email': 'alumno@edu-space.com',
'name': 'Estudiante Regular',
'role_name': 'Alumno',
'role_code': 'ALUMNO'
}
]
for u_info in institutional_users:
u_obj = User.query.filter_by(email=u_info['email']).first()
r_match = roles_by_name.get(u_info['role_name'])
if not u_obj:
u_obj = User(
email=u_info['email'],
name=u_info['name'],
role=u_info['role_code'],
role_id=r_match.id if r_match else None,
is_active=True,
preferred_language="es",
theme_preference="auto"
)
u_obj.set_password("admin123")
db.session.add(u_obj)
db.session.commit()
print(f" [+] Usuario creado: {u_info['email']} | Clave: admin123 | Rol: {u_info['role_name']}")
else:
# Garantizar sincronización de rol, estado activo y clave
if r_match and u_obj.role_id != r_match.id:
u_obj.role_id = r_match.id
u_obj.role = u_info['role_code']
u_obj.is_active = True
if not u_obj.check_password("admin123"):
u_obj.set_password("admin123")
print(f" [*] Clave de {u_info['email']} restablecida a 'admin123'.")
if not u_obj.preferred_language:
u_obj.preferred_language = "es"
if not u_obj.theme_preference:
u_obj.theme_preference = "auto"
db.session.commit()
print(f" [OK] Usuario {u_info['email']} validado (Rol: {u_info['role_name']}, Clave: admin123).")
# 5. Inicializar edificios institucionales oficiales
print("[*] Verificando edificios institucionales...")