Skip to content

Commit 0d280f7

Browse files
committed
fix: problem user
1 parent f7d0453 commit 0d280f7

2 files changed

Lines changed: 84 additions & 77 deletions

File tree

api/callcentersite/callcentersite/apps/users/management/commands/seed_permisos_base.py

Lines changed: 59 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -52,149 +52,160 @@ def _crear_funciones(self):
5252
funciones_data = [
5353
# VISTAS
5454
{
55-
'codigo': 'vistas.dashboards',
55+
'nombre_completo': 'sistema.vistas.dashboards',
5656
'nombre': 'Dashboards',
5757
'descripcion': 'Visualización de paneles de control e indicadores',
5858
'dominio': 'vistas',
59+
'categoria': 'vistas',
5960
},
6061
{
61-
'codigo': 'vistas.reportes',
62+
'nombre_completo': 'sistema.vistas.reportes',
6263
'nombre': 'Reportes',
6364
'descripcion': 'Generación y visualización de reportes',
6465
'dominio': 'vistas',
66+
'categoria': 'vistas',
6567
},
6668
{
67-
'codigo': 'vistas.calidad',
69+
'nombre_completo': 'sistema.vistas.calidad',
6870
'nombre': 'Calidad',
6971
'descripcion': 'Evaluación y gestión de calidad de llamadas',
7072
'dominio': 'vistas',
73+
'categoria': 'vistas',
7174
},
7275
{
73-
'codigo': 'vistas.equipos',
76+
'nombre_completo': 'sistema.vistas.equipos',
7477
'nombre': 'Equipos',
7578
'descripcion': 'Gestión y visualización de equipos de trabajo',
7679
'dominio': 'vistas',
80+
'categoria': 'vistas',
7781
},
7882
{
79-
'codigo': 'vistas.analisis',
83+
'nombre_completo': 'sistema.vistas.analisis',
8084
'nombre': 'Análisis',
8185
'descripcion': 'Análisis avanzados y métricas',
8286
'dominio': 'vistas',
87+
'categoria': 'vistas',
8388
},
8489
# ADMINISTRACIÓN
8590
{
86-
'codigo': 'administracion.usuarios',
91+
'nombre_completo': 'sistema.administracion.usuarios',
8792
'nombre': 'Gestión de Usuarios',
8893
'descripcion': 'Administración completa de usuarios del sistema',
8994
'dominio': 'administracion',
95+
'categoria': 'administracion',
9096
},
9197
{
92-
'codigo': 'administracion.grupos',
98+
'nombre_completo': 'sistema.administracion.grupos',
9399
'nombre': 'Gestión de Grupos',
94100
'descripcion': 'Administración de grupos de permisos',
95101
'dominio': 'administracion',
102+
'categoria': 'administracion',
96103
},
97104
{
98-
'codigo': 'administracion.permisos',
105+
'nombre_completo': 'sistema.administracion.permisos',
99106
'nombre': 'Gestión de Permisos',
100107
'descripcion': 'Administración de capacidades y permisos excepcionales',
101108
'dominio': 'administracion',
109+
'categoria': 'administracion',
102110
},
103111
{
104-
'codigo': 'administracion.auditoria',
112+
'nombre_completo': 'sistema.administracion.auditoria',
105113
'nombre': 'Auditoría',
106114
'descripcion': 'Consulta de logs y auditoría del sistema',
107115
'dominio': 'administracion',
116+
'categoria': 'administracion',
108117
},
109118
{
110-
'codigo': 'administracion.configuracion',
119+
'nombre_completo': 'sistema.administracion.configuracion',
111120
'nombre': 'Configuración',
112121
'descripcion': 'Configuración general del sistema',
113122
'dominio': 'administracion',
123+
'categoria': 'administracion',
114124
},
115125
]
116126

117127
creadas = 0
118128
for func_data in funciones_data:
119129
funcion, created = Funcion.objects.get_or_create(
120-
codigo=func_data['codigo'],
130+
nombre_completo=func_data['nombre_completo'],
121131
defaults={
122132
'nombre': func_data['nombre'],
123133
'descripcion': func_data['descripcion'],
124134
'dominio': func_data['dominio'],
135+
'categoria': func_data['categoria'],
125136
'activa': True,
126137
}
127138
)
128139
if created:
129140
creadas += 1
130-
self.stdout.write(f' + Función creada: {funcion.codigo}')
141+
self.stdout.write(f' + Función creada: {funcion.nombre_completo}')
131142
else:
132-
self.stdout.write(f' - Función ya existe: {funcion.codigo}')
143+
self.stdout.write(f' - Función ya existe: {funcion.nombre_completo}')
133144

134145
return creadas
135146

136147
def _crear_capacidades(self):
137148
"""Crea capacidades base asociadas a funciones."""
138149
capacidades_data = [
139150
# DASHBOARDS
140-
('sistema.vistas.dashboards.ver', 'Ver Dashboards', 'vistas.dashboards'),
141-
('sistema.vistas.dashboards.editar', 'Editar Dashboards', 'vistas.dashboards'),
142-
('sistema.vistas.dashboards.compartir', 'Compartir Dashboards', 'vistas.dashboards'),
151+
('sistema.vistas.dashboards.ver', 'Ver Dashboards', 'sistema.vistas.dashboards'),
152+
('sistema.vistas.dashboards.editar', 'Editar Dashboards', 'sistema.vistas.dashboards'),
153+
('sistema.vistas.dashboards.compartir', 'Compartir Dashboards', 'sistema.vistas.dashboards'),
143154

144155
# REPORTES
145-
('sistema.vistas.reportes.ver', 'Ver Reportes', 'vistas.reportes'),
146-
('sistema.vistas.reportes.crear', 'Crear Reportes', 'vistas.reportes'),
147-
('sistema.vistas.reportes.editar', 'Editar Reportes', 'vistas.reportes'),
148-
('sistema.vistas.reportes.eliminar', 'Eliminar Reportes', 'vistas.reportes'),
149-
('sistema.vistas.reportes.exportar', 'Exportar Reportes', 'vistas.reportes'),
156+
('sistema.vistas.reportes.ver', 'Ver Reportes', 'sistema.vistas.reportes'),
157+
('sistema.vistas.reportes.crear', 'Crear Reportes', 'sistema.vistas.reportes'),
158+
('sistema.vistas.reportes.editar', 'Editar Reportes', 'sistema.vistas.reportes'),
159+
('sistema.vistas.reportes.eliminar', 'Eliminar Reportes', 'sistema.vistas.reportes'),
160+
('sistema.vistas.reportes.exportar', 'Exportar Reportes', 'sistema.vistas.reportes'),
150161

151162
# CALIDAD
152-
('sistema.vistas.calidad.ver', 'Ver Evaluaciones de Calidad', 'vistas.calidad'),
153-
('sistema.vistas.calidad.evaluar', 'Realizar Evaluaciones', 'vistas.calidad'),
154-
('sistema.vistas.calidad.aprobar', 'Aprobar Evaluaciones', 'vistas.calidad'),
163+
('sistema.vistas.calidad.ver', 'Ver Evaluaciones de Calidad', 'sistema.vistas.calidad'),
164+
('sistema.vistas.calidad.evaluar', 'Realizar Evaluaciones', 'sistema.vistas.calidad'),
165+
('sistema.vistas.calidad.aprobar', 'Aprobar Evaluaciones', 'sistema.vistas.calidad'),
155166

156167
# EQUIPOS
157-
('sistema.vistas.equipos.ver', 'Ver Equipos', 'vistas.equipos'),
158-
('sistema.vistas.equipos.gestionar', 'Gestionar Equipos', 'vistas.equipos'),
168+
('sistema.vistas.equipos.ver', 'Ver Equipos', 'sistema.vistas.equipos'),
169+
('sistema.vistas.equipos.gestionar', 'Gestionar Equipos', 'sistema.vistas.equipos'),
159170

160171
# ANÁLISIS
161-
('sistema.vistas.analisis.ver', 'Ver Análisis', 'vistas.analisis'),
162-
('sistema.vistas.analisis.avanzados', 'Análisis Avanzados', 'vistas.analisis'),
172+
('sistema.vistas.analisis.ver', 'Ver Análisis', 'sistema.vistas.analisis'),
173+
('sistema.vistas.analisis.avanzados', 'Análisis Avanzados', 'sistema.vistas.analisis'),
163174

164175
# USUARIOS
165-
('sistema.administracion.usuarios.ver', 'Ver Usuarios', 'administracion.usuarios'),
166-
('sistema.administracion.usuarios.crear', 'Crear Usuarios', 'administracion.usuarios'),
167-
('sistema.administracion.usuarios.editar', 'Editar Usuarios', 'administracion.usuarios'),
168-
('sistema.administracion.usuarios.eliminar', 'Eliminar Usuarios', 'administracion.usuarios'),
169-
('sistema.administracion.usuarios.restablecer_password', 'Restablecer Contraseñas', 'administracion.usuarios'),
176+
('sistema.administracion.usuarios.ver', 'Ver Usuarios', 'sistema.administracion.usuarios'),
177+
('sistema.administracion.usuarios.crear', 'Crear Usuarios', 'sistema.administracion.usuarios'),
178+
('sistema.administracion.usuarios.editar', 'Editar Usuarios', 'sistema.administracion.usuarios'),
179+
('sistema.administracion.usuarios.eliminar', 'Eliminar Usuarios', 'sistema.administracion.usuarios'),
180+
('sistema.administracion.usuarios.restablecer_password', 'Restablecer Contraseñas', 'sistema.administracion.usuarios'),
170181

171182
# GRUPOS
172-
('sistema.administracion.grupos.ver', 'Ver Grupos', 'administracion.grupos'),
173-
('sistema.administracion.grupos.crear', 'Crear Grupos', 'administracion.grupos'),
174-
('sistema.administracion.grupos.editar', 'Editar Grupos', 'administracion.grupos'),
175-
('sistema.administracion.grupos.eliminar', 'Eliminar Grupos', 'administracion.grupos'),
183+
('sistema.administracion.grupos.ver', 'Ver Grupos', 'sistema.administracion.grupos'),
184+
('sistema.administracion.grupos.crear', 'Crear Grupos', 'sistema.administracion.grupos'),
185+
('sistema.administracion.grupos.editar', 'Editar Grupos', 'sistema.administracion.grupos'),
186+
('sistema.administracion.grupos.eliminar', 'Eliminar Grupos', 'sistema.administracion.grupos'),
176187

177188
# PERMISOS
178-
('sistema.administracion.permisos.ver', 'Ver Permisos', 'administracion.permisos'),
179-
('sistema.administracion.permisos.excepcionales.conceder', 'Conceder Permisos Excepcionales', 'administracion.permisos'),
180-
('sistema.administracion.permisos.excepcionales.revocar', 'Revocar Permisos Excepcionales', 'administracion.permisos'),
189+
('sistema.administracion.permisos.ver', 'Ver Permisos', 'sistema.administracion.permisos'),
190+
('sistema.administracion.permisos.excepcionales.conceder', 'Conceder Permisos Excepcionales', 'sistema.administracion.permisos'),
191+
('sistema.administracion.permisos.excepcionales.revocar', 'Revocar Permisos Excepcionales', 'sistema.administracion.permisos'),
181192

182193
# AUDITORÍA
183-
('sistema.administracion.auditoria.ver', 'Ver Auditoría', 'administracion.auditoria'),
184-
('sistema.administracion.auditoria.exportar', 'Exportar Auditoría', 'administracion.auditoria'),
194+
('sistema.administracion.auditoria.ver', 'Ver Auditoría', 'sistema.administracion.auditoria'),
195+
('sistema.administracion.auditoria.exportar', 'Exportar Auditoría', 'sistema.administracion.auditoria'),
185196

186197
# CONFIGURACIÓN
187-
('sistema.administracion.configuracion.ver', 'Ver Configuración', 'administracion.configuracion'),
188-
('sistema.administracion.configuracion.editar', 'Editar Configuración', 'administracion.configuracion'),
198+
('sistema.administracion.configuracion.ver', 'Ver Configuración', 'sistema.administracion.configuracion'),
199+
('sistema.administracion.configuracion.editar', 'Editar Configuración', 'sistema.administracion.configuracion'),
189200
]
190201

191202
creadas = 0
192-
for codigo, nombre, funcion_codigo in capacidades_data:
203+
for codigo, nombre, funcion_nombre_completo in capacidades_data:
193204
try:
194-
funcion = Funcion.objects.get(codigo=funcion_codigo)
205+
funcion = Funcion.objects.get(nombre_completo=funcion_nombre_completo)
195206
except Funcion.DoesNotExist:
196207
self.stdout.write(
197-
self.style.WARNING(f' ! Función no encontrada: {funcion_codigo}')
208+
self.style.WARNING(f' ! Función no encontrada: {funcion_nombre_completo}')
198209
)
199210
continue
200211

@@ -218,4 +229,4 @@ def _crear_capacidades(self):
218229
funcion.capacidades.add(capacidad)
219230
self.stdout.write(f' - Capacidad ya existe: {capacidad.codigo}')
220231

221-
return creadas
232+
return creadas

api/callcentersite/callcentersite/apps/users/management/commands/seed_permisos_completo.py

Lines changed: 25 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,10 @@ def handle(self, *args, **options):
5959
# FASE 1: Funciones y Capacidades Base
6060
self.stdout.write('\n[1/3] Creando funciones y capacidades base...\n')
6161
try:
62-
call_command(
63-
'seed_permisos_base',
64-
'--reset' if reset else None,
65-
verbosity=1,
66-
)
62+
if reset:
63+
call_command('seed_permisos_base', '--reset', verbosity=1)
64+
else:
65+
call_command('seed_permisos_base', verbosity=1)
6766
except Exception as e:
6867
self.stdout.write(
6968
self.style.ERROR(f'\n[FAIL] Error en seed_permisos_base: {e}')
@@ -73,11 +72,10 @@ def handle(self, *args, **options):
7372
# FASE 2: Grupos por Defecto
7473
self.stdout.write('\n[2/3] Creando grupos de permisos por defecto...\n')
7574
try:
76-
call_command(
77-
'seed_grupos_default',
78-
'--reset' if reset else None,
79-
verbosity=1,
80-
)
75+
if reset:
76+
call_command('seed_grupos_default', '--reset', verbosity=1)
77+
else:
78+
call_command('seed_grupos_default', verbosity=1)
8179
except Exception as e:
8280
self.stdout.write(
8381
self.style.ERROR(f'\n[FAIL] Error en seed_grupos_default: {e}')
@@ -88,12 +86,10 @@ def handle(self, *args, **options):
8886
if not skip_usuarios:
8987
self.stdout.write('\n[3/3] Creando usuarios de demostración...\n')
9088
try:
91-
call_command(
92-
'seed_usuarios_demo',
93-
'--reset' if reset else None,
94-
'--password', password,
95-
verbosity=1,
96-
)
89+
if reset:
90+
call_command('seed_usuarios_demo', '--reset', '--password', password, verbosity=1)
91+
else:
92+
call_command('seed_usuarios_demo', '--password', password, verbosity=1)
9793
except Exception as e:
9894
self.stdout.write(
9995
self.style.ERROR(f'\n[FAIL] Error en seed_usuarios_demo: {e}')
@@ -115,16 +111,16 @@ def handle(self, *args, **options):
115111
'Sistema de Permisos Granulares inicializado con:\n'
116112
'\n'
117113
' FUNCIONES:\n'
118-
' • vistas.dashboards\n'
119-
' • vistas.reportes\n'
120-
' • vistas.calidad\n'
121-
' • vistas.equipos\n'
122-
' • vistas.analisis\n'
123-
' • administracion.usuarios\n'
124-
' • administracion.grupos\n'
125-
' • administracion.permisos\n'
126-
' • administracion.auditoria\n'
127-
' • administracion.configuracion\n'
114+
' • sistema.vistas.dashboards\n'
115+
' • sistema.vistas.reportes\n'
116+
' • sistema.vistas.calidad\n'
117+
' • sistema.vistas.equipos\n'
118+
' • sistema.vistas.analisis\n'
119+
' • sistema.administracion.usuarios\n'
120+
' • sistema.administracion.grupos\n'
121+
' • sistema.administracion.permisos\n'
122+
' • sistema.administracion.auditoria\n'
123+
' • sistema.administracion.configuracion\n'
128124
'\n'
129125
' CAPACIDADES: ~32 capacidades base\n'
130126
'\n'
@@ -161,18 +157,18 @@ def handle(self, *args, **options):
161157
' >>> Capacidad.objects.count() # Debe ser ~32\n'
162158
'\n'
163159
' 2. Probar API:\n'
164-
' curl -X POST http://localhost:8000/api/auth/login/ \\\n'
160+
' curl -X POST http://localhost:8000/api/v1/auth/login/ \\\n'
165161
' -d "username=admin_demo&password=' + password + '"\n'
166162
'\n'
167163
' 3. Probar verificación de permisos:\n'
168164
' python manage.py shell\n'
169165
' >>> from django.contrib.auth import get_user_model\n'
170166
' >>> user = get_user_model().objects.get(username="agente1_demo")\n'
171167
' >>> from callcentersite.apps.users.services_permisos_granular import *\n'
172-
' >>> UserManagementService.verificar_permiso(\n'
168+
' >>> UserManagementService.usuario_tiene_permiso(\n'
173169
' ... user.id, "sistema.vistas.dashboards.ver")\n'
174170
' True\n'
175171
'\n'
176172
'================================================================\n'
177173
)
178-
)
174+
)

0 commit comments

Comments
 (0)