fix: corrige validacion de permisos de bedelia y gestion de inscripciones

This commit is contained in:
Carlos Tello
2026-09-05 13:01:39 -03:00
parent 1fda344248
commit 865538b727
4 changed files with 581 additions and 6 deletions
+33 -4
View File
@@ -107,7 +107,9 @@ def init_database():
'import': 'read_write',
'optimizer': 'read_write',
'users': 'read_write',
'milestone_types': 'read_write'
'milestone_types': 'read_write',
'metrics': 'read_write',
'enrollment': 'read_write'
}
},
{
@@ -123,7 +125,9 @@ def init_database():
'import': 'none',
'optimizer': 'read',
'users': 'none',
'milestone_types': 'read'
'milestone_types': 'read',
'metrics': 'none',
'enrollment': 'read'
}
},
{
@@ -139,7 +143,9 @@ def init_database():
'import': 'read_write',
'optimizer': 'none',
'users': 'none',
'milestone_types': 'read_write'
'milestone_types': 'read_write',
'metrics': 'read_write',
'enrollment': 'read_write'
}
},
{
@@ -155,7 +161,9 @@ def init_database():
'import': 'none',
'optimizer': 'none',
'users': 'none',
'milestone_types': 'read'
'milestone_types': 'read',
'metrics': 'none',
'enrollment': 'read'
}
}
]
@@ -188,6 +196,27 @@ def init_database():
db.session.commit()
print("[OK] Roles y matriz de permisos configurados correctamente.")
# 3b. Deduplicar rol Bedelia con acento (Bedelía) si existe
print("[*] Verificando duplicados del rol Bedelia...")
bedelia_accented = Role.query.filter(
Role.name.in_(['Bedelía', 'Bedel\u00eda', 'BEDELÍA'])
).first()
bedelia_canonical = Role.query.filter_by(name='Bedelia').first()
if bedelia_accented and bedelia_canonical and bedelia_accented.id != bedelia_canonical.id:
# Migrate all users from accented role to canonical
from app.models.user import User
affected = User.query.filter_by(role_id=bedelia_accented.id).all()
for u in affected:
u.role_id = bedelia_canonical.id
u.role = 'BEDELIA'
print(f" [~] Usuario {u.email} migrado de '{bedelia_accented.name}' a 'Bedelia'")
db.session.flush()
db.session.delete(bedelia_accented)
db.session.commit()
print(f" [OK] Rol duplicado '{bedelia_accented.name}' eliminado. {len(affected)} usuario(s) migrado(s).")
else:
print(" [OK] Sin duplicados de Bedelia.")
# 4. Verificar o crear usuarios institucionales de cada rol
print("[*] Verificando usuarios institucionales y credenciales...")