58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
"""
|
|
Agrega los permisos auditoria.view y auditoria.process al catálogo y los asigna
|
|
a los roles admin, developer (ambos) y Agente Aduanal (solo view).
|
|
"""
|
|
from django.db import migrations
|
|
|
|
NUEVOS_PERMISOS = [
|
|
('auditoria.view', 'Ver estado y resultados de auditoría VUCEM', 'auditoria'),
|
|
('auditoria.process', 'Lanzar procesos de auditoría y reauditoría', 'auditoria'),
|
|
]
|
|
|
|
ROLES_AUDITORIA_FULL = ['admin', 'developer']
|
|
ROLES_AUDITORIA_VIEW = ['Agente Aduanal']
|
|
|
|
|
|
def agregar_auditoria(apps, schema_editor):
|
|
RolePermission = apps.get_model('rbac', 'RolePermission')
|
|
OrganizationRole = apps.get_model('rbac', 'OrganizationRole')
|
|
|
|
perms = {}
|
|
for codename, descripcion, modulo in NUEVOS_PERMISOS:
|
|
perm, _ = RolePermission.objects.get_or_create(
|
|
codename=codename,
|
|
defaults={'descripcion': descripcion, 'modulo': modulo},
|
|
)
|
|
perms[codename] = perm
|
|
|
|
for role in OrganizationRole.objects.filter(nombre__in=ROLES_AUDITORIA_FULL):
|
|
role.permissions.add(perms['auditoria.view'], perms['auditoria.process'])
|
|
|
|
for role in OrganizationRole.objects.filter(nombre__in=ROLES_AUDITORIA_VIEW):
|
|
role.permissions.add(perms['auditoria.view'])
|
|
|
|
|
|
def revertir(apps, schema_editor):
|
|
RolePermission = apps.get_model('rbac', 'RolePermission')
|
|
OrganizationRole = apps.get_model('rbac', 'OrganizationRole')
|
|
|
|
for codename, _, _ in NUEVOS_PERMISOS:
|
|
try:
|
|
perm = RolePermission.objects.get(codename=codename)
|
|
except RolePermission.DoesNotExist:
|
|
continue
|
|
for role in OrganizationRole.objects.all():
|
|
role.permissions.remove(perm)
|
|
perm.delete()
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('rbac', '0003_notificaciones_receive'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.RunPython(agregar_auditoria, reverse_code=revertir),
|
|
]
|