Exemple #1
0
 def test_servicio_agentes_activos_no_incluye_agentes_no_asignados_al_supervisor(
         self, logger, _ami_manager, manager):
     self.campana_activa.supervisors.add(self.supervisor_admin.user)
     ag1 = self.agente_profile
     ag10, ag11 = AgenteProfileFactory.create_batch(2)
     QueueMemberFactory.create(member=ag10, queue_name=self.queue)
     self.client.login(username=self.supervisor_admin.user.username,
                       password=self.PWD)
     _ami_manager.return_value = (
         "/OML/AGENT/{0}/NAME                          : Agente 01\r\n".
         format(ag1.pk) +
         "/OML/AGENT/{0}/SIP                           : 1004\r\n".format(
             ag1.pk) +
         "/OML/AGENT/{0}/STATUS                        : READY:1582309004\r\n"
         .format(ag1.pk) +
         "/OML/AGENT/{0}/NAME                          : Agente10\r\n".
         format(ag10.pk) +
         "/OML/AGENT/{0}/SIP                           : 1013\r\n".format(
             ag10.pk) +
         "/OML/AGENT/{0}/STATUS                        : READY:1582309102\r\n"
         .format(ag10.pk) +
         "/OML/AGENT/{0}/NAME                          : Agente11\r\n".
         format(ag11.pk) +
         "/OML/AGENT/{0}/SIP                           : 1014\r\n".format(
             ag11.pk) +
         "/OML/AGENT/{0}/STATUS                        : READY:1582309100\r\n"
         .format(ag11.pk) + "3 results found."), None
     url = reverse('api_agentes_activos')
     response = self.client.get(url)
     response_json = response.json()
     self.assertEqual(len(response_json), 2)
     for datos_agente in response_json:
         self.assertTrue(datos_agente.get('id') != str(ag11.pk))
Exemple #2
0
 def test_servicio_agentes_no_adiciona_grupo_headers_desconocidos(
         self, _ami_manager, manager):
     self.campana_activa.supervisors.add(self.supervisor_admin.user)
     ag1 = self.agente_profile
     ag2 = AgenteProfileFactory()
     QueueMemberFactory.create(member=ag2, queue_name=self.queue)
     self.client.login(username=self.supervisor_admin.user.username,
                       password=self.PWD)
     _ami_manager.return_value = (
         "/OML/AGENT/{0}/NAME                         : John Perkins\r\n".
         format(ag1.pk) +
         "/OML/AGENT/{0}/SIP                          : 1001\r\n".format(
             ag1.pk) +
         "/OML/AGENT/{0}/STATUS                       : READY:1582309000\r\n"
         .format(ag1.pk) +
         "/OML/AGENT/{0}/STRANGE-HEADER               : strange-value\r\n".
         format(ag1.pk) +
         "/OML/AGENT/{0}/NAME                         : Silvia Pensive\r\n".
         format(ag2.pk) +
         "/OML/AGENT/{0}/SIP                          : 1002\r\n".format(
             ag2.pk) +
         "/OML/AGENT/{0}/STATUS                       : PAUSE:1582309000\r\n"
         .format(ag2.pk) + "2 results found."), None
     url = reverse('api_agentes_activos')
     response = self.client.get(url)
     self.assertEqual(len(response.json()), 2)
     datos_agente_1 = response.json()[0]
     datos_agente_2 = response.json()[1]
     self.assertEqual(datos_agente_2['id'], str(ag2.pk))
     self.assertEqual(datos_agente_2['status'], 'PAUSE')
     self.assertEqual([i for i in datos_agente_1.keys()],
                      ['id', 'nombre', 'sip', 'status', 'tiempo'])
Exemple #3
0
 def test_datos_reporte_grafico_calificaciones_por_agente_coinciden_estadisticas_sistema(
         self, render_to_png, crea_reporte_pdf, escribir_archivo_datos_csv):
     agente_profile1, agente_profile2, agente_profile3 = AgenteProfileFactory.create_batch(
         3)
     log1 = LlamadaLogFactory(campana_id=self.campana_activa.pk,
                              agente_id=agente_profile1.pk)
     log2 = LlamadaLogFactory(campana_id=self.campana_activa.pk,
                              agente_id=agente_profile2.pk)
     log3 = LlamadaLogFactory(campana_id=self.campana_activa.pk,
                              agente_id=agente_profile3.pk)
     CalificacionClienteFactory(
         callid=log1.callid,
         opcion_calificacion=self.opcion_calificacion_gestion,
         agente=agente_profile1)
     CalificacionClienteFactory(
         callid=log2.callid,
         opcion_calificacion=self.opcion_calificacion_noaccion,
         agente=agente_profile2)
     CalificacionClienteFactory(
         callid=log3.callid,
         opcion_calificacion=self.opcion_calificacion_noaccion,
         agente=agente_profile3)
     url = reverse('campana_reporte_grafico', args=[self.campana_activa.pk])
     response = self.client.get(url, follow=True)
     estadisticas = response.context_data['graficos_estadisticas'][
         'estadisticas']
     self.assertContains(response, agente_profile1.user.get_full_name())
     self.assertContains(response, agente_profile2.user.get_full_name())
     self.assertContains(response, agente_profile3.user.get_full_name())
     # se toman en cuenta las calificaciones iniciales del setUp
     self.assertEqual(estadisticas['total_ventas'], 2)
     self.assertEqual(estadisticas['total_calificados'], 5)
Exemple #4
0
 def _generar_ami_manager_response_agentes(self):
     # genera datos que simulan lo más aproximadamente posible las lineas de output de
     # los estados de los agentes obtenidos por el comando AMI 'database show OML/AGENT'
     linea_agente = 'Output: /OML/AGENT/{0}/NAME                                 : agente{0}'
     linea_sip = 'Output: /OML/AGENT/{0}/SIP                                  : 100{0}'
     linea_status = 'Output: /OML/AGENT/{0}/STATUS                               : {1}:155439223'
     response = []
     self.ag1 = self.agente_profile
     self.ag2, self.ag3 = AgenteProfileFactory.create_batch(2)
     QueueMemberFactory.create(member=self.ag2, queue_name=self.queue)
     QueueMemberFactory.create(member=self.ag3, queue_name=self.queue)
     datos_agentes = [{
         'id': self.ag1.pk,
         'status': 'READY'
     }, {
         'id': self.ag2.pk,
         'status': 'PAUSE'
     }, {
         'id': self.ag3.pk,
         'status': 'OFFLINE'
     }]
     for datos_agente in datos_agentes:
         id_agente = datos_agente['id']
         status_agente = datos_agente['status']
         response.extend([
             linea_agente.format(id_agente),
             linea_sip.format(id_agente),
             linea_status.format(id_agente, status_agente)
         ])
     return '\r\n'.join(response), None
    def setUp(self):
        self.usuario_admin_supervisor = UserFactory(is_staff=True, is_supervisor=True)
        self.usuario_admin_supervisor.set_password(self.PWD)
        self.usuario_admin_supervisor.save()
        self.agente_profile = AgenteProfileFactory.create(user=self.usuario_admin_supervisor)

        self.nombre_calificacion = NombreCalificacionFactory.create(nombre=self.CALIFICACION_NOMBRE)
        self.nombre_calificacion_gestion = NombreCalificacionFactory.create(nombre=self.GESTION)

        self.campana_activa = CampanaFactory.create(
            estado=Campana.ESTADO_ACTIVA, type=Campana.TYPE_PREVIEW)

        self.contacto_calificado_gestion = ContactoFactory(
            bd_contacto=self.campana_activa.bd_contacto)
        self.contacto_calificado_no_accion = ContactoFactory(
            bd_contacto=self.campana_activa.bd_contacto)
        self.contacto_no_atendido = ContactoFactory(bd_contacto=self.campana_activa.bd_contacto)
        self.contacto_no_calificado = ContactoFactory(bd_contacto=self.campana_activa.bd_contacto)

        self.opcion_calificacion_gestion = OpcionCalificacionFactory.create(
            campana=self.campana_activa, nombre=self.nombre_calificacion_gestion.nombre,
            tipo=OpcionCalificacion.GESTION)
        self.opcion_calificacion_noaccion = OpcionCalificacionFactory.create(
            campana=self.campana_activa, nombre=self.nombre_calificacion.nombre,
            tipo=OpcionCalificacion.NO_ACCION)

        self.telefono1 = self.contacto_calificado_gestion.telefono
        self.telefono2 = self.contacto_calificado_no_accion.telefono
        self.telefono3 = self.contacto_no_atendido.telefono
        self.telefono4 = self.contacto_no_calificado.telefono

        self.generador_log_llamadas = GeneradorDeLlamadaLogs()
        self.generador_log_llamadas.generar_log(
            self.campana_activa, False, 'COMPLETEAGENT', self.telefono1, agente=self.agente_profile,
            contacto=self.contacto_calificado_gestion, duracion_llamada=self.DURACION_LLAMADA,
            callid=1)
        self.generador_log_llamadas.generar_log(
            self.campana_activa, False, 'COMPLETEAGENT', self.telefono2, agente=self.agente_profile,
            contacto=self.contacto_calificado_no_accion, duracion_llamada=self.DURACION_LLAMADA,
            callid=2)
        self.generador_log_llamadas.generar_log(
            self.campana_activa, True, 'NOANSWER', self.telefono3, agente=self.agente_profile,
            contacto=self.contacto_no_atendido, callid=3)
        self.generador_log_llamadas.generar_log(
            self.campana_activa, True, 'COMPLETEOUTNUM', self.telefono4, agente=self.agente_profile,
            contacto=self.contacto_no_calificado, duracion_llamada=0, callid=4)
        callid_gestion = LlamadaLog.objects.get(
            contacto_id=self.contacto_calificado_gestion.pk, event='COMPLETEAGENT').callid
        callid_no_accion = LlamadaLog.objects.get(
            contacto_id=self.contacto_calificado_no_accion.pk, event='COMPLETEAGENT').callid
        self.calif_gestion = CalificacionClienteFactory.create(
            opcion_calificacion=self.opcion_calificacion_gestion, agente=self.agente_profile,
            contacto=self.contacto_calificado_gestion, callid=callid_gestion)
        self.calif_no_accion = CalificacionClienteFactory.create(
            opcion_calificacion=self.opcion_calificacion_noaccion, agente=self.agente_profile,
            contacto=self.contacto_calificado_no_accion, callid=callid_no_accion)
        CalificacionCliente.history.all().update(history_change_reason='calificacion')

        self.client.login(username=self.usuario_admin_supervisor.username, password=self.PWD)
 def handle(self, *args, **options):
     nro_grabaciones = options['nro_llamadas'][0]
     agente = AgenteProfileFactory.create()
     for i in range(nro_grabaciones):
         try:
             self.grabacion_marcada_aleatoria(agente)
         except Exception as e:
             raise CommandError('Fallo del comando: {0}'.format(e.message))
     self.stdout.write(
         self.style.SUCCESS('Creada(s) {0} grabaciones(s)'.format(nro_grabaciones)))
Exemple #7
0
 def crear_agentes(self):
     self.agentes = []
     for i in range(1, 5):
         username = '******' % i
         usrs = User.objects.filter(username=username)
         if usrs.count() == 1:
             agente = usrs[0].agenteprofile
         else:
             usr = UserFactory(username=username, is_agente=True)
             agente = AgenteProfileFactory(user=usr)
         self.agentes.append(agente)
Exemple #8
0
    def setUp(self):
        super(GeneradorDeLlamadaLogsTests, self).setUp()
        self.manual = CampanaFactory.create(type=Campana.TYPE_MANUAL)
        self.usr_agente1 = UserFactory.create(username='******',
                                              is_agente=True)
        self.agente1 = AgenteProfileFactory.create(user=self.usr_agente1)

        self.dialer = CampanaFactory.create(type=Campana.TYPE_DIALER)
        self.contacto_d = ContactoFactory(bd_contacto=self.dialer.bd_contacto)

        self.entrante = CampanaFactory.create(type=Campana.TYPE_ENTRANTE)

        self.preview = CampanaFactory.create(type=Campana.TYPE_PREVIEW)
        self.contacto_p = ContactoFactory(bd_contacto=self.preview.bd_contacto)
Exemple #9
0
    def setUp(self):
        super(ReporteDeLLamadasEntrantesDeSupervisionTest, self).setUp()
        self.generador = GeneradorDeLlamadaLogs()

        self.supervisor = SupervisorProfileFactory()
        self.supervisor.user.set_password(self.PWD)
        self.supervisor.user.save()

        self.agente1 = AgenteProfileFactory()
        self.agente2 = AgenteProfileFactory()

        self.entrante1 = CampanaFactory.create(
            type=Campana.TYPE_ENTRANTE,
            nombre='camp-entrante-1',
            estado=Campana.ESTADO_ACTIVA,
            supervisors=[self.supervisor.user])
        self.opcion_calificacion = OpcionCalificacionFactory(
            campana=self.entrante1, tipo=OpcionCalificacion.GESTION)
        # Campaña que no debe estar en los reportes por no ser del supervisor
        self.entrante2 = CampanaFactory.create(type=Campana.TYPE_ENTRANTE,
                                               nombre='camp-entrante-2',
                                               estado=Campana.ESTADO_ACTIVA)
        self.queue = QueueFactory.create(campana=self.entrante1)
    def setUp(self):
        super(BaseReporteDeLlamadasTests, self).setUp()
        self.hasta = fecha_hora_local(now())
        self.durante = fecha_hora_local(now() - timedelta(days=1))
        self.desde = datetime_hora_minima_dia(self.hasta) - timedelta(days=1)

        self.supervisor = SupervisorProfileFactory(is_administrador=True)

        self.agente1 = AgenteProfileFactory()
        self.agente2 = AgenteProfileFactory()
        self.agente3 = AgenteProfileFactory()

        self.manual = CampanaFactory.create(type=Campana.TYPE_MANUAL,
                                            nombre='camp-manual-1',
                                            estado=Campana.ESTADO_ACTIVA)

        self.dialer = CampanaFactory.create(type=Campana.TYPE_DIALER,
                                            nombre='camp-dialer-1',
                                            estado=Campana.ESTADO_ACTIVA)
        self.contacto_d = ContactoFactory(bd_contacto=self.dialer.bd_contacto)

        self.entrante = CampanaFactory.create(type=Campana.TYPE_ENTRANTE,
                                              nombre='camp-entrante-1',
                                              estado=Campana.ESTADO_ACTIVA)

        self.preview = CampanaFactory.create(type=Campana.TYPE_PREVIEW,
                                             nombre='camp-preview-1',
                                             estado=Campana.ESTADO_ACTIVA)
        self.contacto_p = ContactoFactory(bd_contacto=self.preview.bd_contacto)

        self.campanas = [
            self.manual,
            self.dialer,
            self.entrante,
            self.preview,
        ]
Exemple #11
0
 def test_servicio_agentes_activos_entradas_mixtas_lineas_pause_id_aceptadas(
         self, logger, _ami_manager, manager):
     ag1_pk = self.agente_profile.pk
     self.campana_activa.supervisors.add(self.supervisor_admin.user)
     ag2, ag3, ag4 = AgenteProfileFactory.create_batch(3)
     QueueMemberFactory.create(member=ag2, queue_name=self.queue)
     QueueMemberFactory.create(member=ag3, queue_name=self.queue)
     QueueMemberFactory.create(member=ag4, queue_name=self.queue)
     self.client.login(username=self.supervisor_admin.user.username,
                       password=self.PWD)
     _ami_manager.return_value = (
         "/OML/AGENT/{0}/NAME                            : John Perkins\r\n"
         .format(ag1_pk) +
         "/OML/AGENT/{0}/PAUSE_ID                        : 1\r\n".format(
             ag1_pk) +
         "/OML/AGENT/{0}/SIP                             : 1001\r\n".format(
             ag1_pk) +
         "/OML/AGENT/{0}/STATUS                          : \r\n".format(
             ag1_pk) +
         "/OML/AGENT/{0}/NAME                            : Silvia Pensive\r\n"
         .format(ag2.pk) +
         "/OML/AGENT/{0}/SIP                             : 1002\r\n".format(
             ag2.pk) +
         "/OML/AGENT/{0}/STATUS                          : PAUSE:1582309000\r\n"
         .format(ag2.pk) +
         "/OML/AGENT/{0}/NAME                            : FERNANDO XXX\r\n"
         .format(ag3.pk) +
         "/OML/AGENT/{0}/SIP                             : 1105\r\n".format(
             ag3.pk) +
         "/OML/AGENT/{0}/STATUS                          : \r\n".format(
             ag3.pk) +
         "/OML/AGENT/{0}/NAME                            : Marge Simpson\r\n"
         .format(ag4.pk) +
         "/OML/AGENT/{0}/PAUSE_ID                        : 0\r\n".format(
             ag4.pk) +
         "/OML/AGENT/{0}/SIP                             : 1003\r\n".format(
             ag4.pk) +
         "/OML/AGENT/{0}/STATUS                          : PAUSE:1582309500\r\n"
         .format(ag4.pk) + "2 results found."), None
     url = reverse('api_agentes_activos')
     response = self.client.get(url)
     response_json = response.json()
     agent1_dict = response_json[1]
     self.assertEqual(len(response_json), 2)
     self.assertEqual(agent1_dict['pause_id'], '0')
Exemple #12
0
    def setUp(self):
        super(CalificacionTests, self).setUp()
        self.usuario_agente = UserFactory(is_agente=True)
        self.usuario_agente.set_password(self.PWD)
        self.usuario_agente.save()
        self.campana = CampanaFactory.create()
        self.nombre_opcion_gestion = NombreCalificacionFactory.create()
        self.nombre_calificacion_agenda = NombreCalificacion.objects.get(
            nombre=settings.CALIFICACION_REAGENDA)
        self.formulario = FormularioFactory()
        self.campo_formulario = FieldFormularioFactory(
            formulario=self.formulario)
        self.opcion_calificacion_gestion = OpcionCalificacionFactory.create(
            campana=self.campana,
            nombre=self.nombre_opcion_gestion.nombre,
            tipo=OpcionCalificacion.GESTION,
            formulario=self.formulario)
        self.opcion_calificacion_agenda = OpcionCalificacionFactory.create(
            campana=self.campana,
            nombre=self.nombre_calificacion_agenda.nombre,
            tipo=OpcionCalificacion.AGENDA)
        self.opcion_calificacion_camp_manual = OpcionCalificacionFactory.create(
            campana=self.campana, nombre=self.nombre_opcion_gestion.nombre)
        self.opcion_calificacion_no_accion = OpcionCalificacionFactory.create(
            campana=self.campana, tipo=OpcionCalificacion.NO_ACCION)

        self.contacto = ContactoFactory.create()
        self.campana.bd_contacto.contactos.add(self.contacto)

        self.queue = QueueFactory.create(campana=self.campana)
        self.agente_profile = AgenteProfileFactory.create(
            user=self.usuario_agente)

        self.calificacion_cliente = CalificacionClienteFactory(
            opcion_calificacion=self.opcion_calificacion_camp_manual,
            agente=self.agente_profile,
            contacto=self.contacto)

        QueueMemberFactory.create(member=self.agente_profile,
                                  queue_name=self.queue)

        self.client.login(username=self.usuario_agente.username,
                          password=self.PWD)
Exemple #13
0
 def test_servicio_agentes_activos_muestra_activos_no_offline(
         self, _ami_manager, manager):
     self.campana_activa.supervisors.add(self.supervisor_admin.user)
     agente = AgenteProfileFactory()
     QueueMemberFactory.create(member=agente, queue_name=self.queue)
     self.client.login(username=self.supervisor_admin.user.username,
                       password=self.PWD)
     _ami_manager.return_value = self._generar_ami_manager_response_agentes(
     )
     url = reverse('api_agentes_activos')
     response = self.client.get(url)
     self.assertEqual(len(response.json()), 2)
     for datos_agente in response.json():
         self.assertIn(
             datos_agente['id'],
             [str(self.ag1.pk), str(self.ag2.pk)])
         if datos_agente['id'] == str(self.ag1.pk):
             self.assertEqual(datos_agente['status'], 'READY')
         else:
             self.assertEqual(datos_agente['status'], 'PAUSE')
Exemple #14
0
    def setUp(self):
        super(ReporteDeLLamadasSalientesDeSupervisionTest, self).setUp()
        self.generador = GeneradorDeLlamadaLogs()

        self.supervisor = SupervisorProfileFactory()
        self.agente1 = AgenteProfileFactory()

        self.manual = CampanaFactory.create(type=Campana.TYPE_MANUAL,
                                            nombre='camp-manual-1',
                                            estado=Campana.ESTADO_ACTIVA,
                                            supervisors=[self.supervisor.user])
        self.opcion_calificacion_m1 = OpcionCalificacionFactory(
            campana=self.manual, tipo=OpcionCalificacion.GESTION)
        self.preview = CampanaFactory.create(
            type=Campana.TYPE_PREVIEW,
            nombre='camp-preview-1',
            estado=Campana.ESTADO_ACTIVA,
            supervisors=[self.supervisor.user])
        self.opcion_calificacion_p1 = OpcionCalificacionFactory(
            campana=self.preview, tipo=OpcionCalificacion.GESTION)

        # Campañas que no deben estar en los reportes por no ser del supervisor
        self.manual2 = CampanaFactory.create(type=Campana.TYPE_MANUAL,
                                             nombre='camp-manual-2',
                                             estado=Campana.ESTADO_ACTIVA)
        self.preview2 = CampanaFactory.create(type=Campana.TYPE_PREVIEW,
                                              nombre='camp-preview-2',
                                              estado=Campana.ESTADO_ACTIVA)

        # Campañas que no deben estar en los reportes por no ser MANUAL o PREVIEW
        self.dialer = CampanaFactory.create(type=Campana.TYPE_DIALER,
                                            nombre='camp-dialer-1',
                                            estado=Campana.ESTADO_ACTIVA,
                                            supervisors=[self.supervisor.user])
        self.opcion_calificacion_d1 = OpcionCalificacionFactory(
            campana=self.dialer, tipo=OpcionCalificacion.GESTION)
        self.dialer2 = CampanaFactory.create(type=Campana.TYPE_DIALER,
                                             nombre='camp-dialer-2',
                                             estado=Campana.ESTADO_ACTIVA)
Exemple #15
0
 def test_servicio_agentes_activos_detecta_grupos_menos_lineas_previstas(
         self, _ami_manager, manager):
     self.campana_activa.supervisors.add(self.supervisor_admin.user)
     ag1 = self.agente_profile
     ag2 = AgenteProfileFactory()
     QueueMemberFactory.create(member=ag2, queue_name=self.queue)
     self.client.login(username=self.supervisor_admin.user.username,
                       password=self.PWD)
     _ami_manager.return_value = (
         "/OML/AGENT/{0}/NAME                       : John Perkins\r\n".
         format(ag1.pk) +
         "/OML/AGENT/{0}/NAME                       : Silvia Pensive\r\n".
         format(ag2.pk) +
         "/OML/AGENT/{0}/SIP                        : 1001\r\n".format(
             ag2.pk) +
         "/OML/AGENT/{0}/STATUS                     : READY:1582309000\r\n".
         format(ag2.pk) + "2 results found."), None
     url = reverse('api_agentes_activos')
     response = self.client.get(url)
     self.assertEqual(len(response.json()), 1)
     datos_agente = response.json()[0]
     self.assertEqual(datos_agente['id'], str(ag2.pk))
     self.assertEqual(datos_agente['status'], 'READY')
Exemple #16
0
    def setUp(self):
        self.factory = RequestFactory()

        self.supervisor_admin = SupervisorProfileFactory(is_administrador=True)
        self.supervisor_admin.user.set_password(self.PWD)
        self.supervisor_admin.user.save()

        self.supervisor = SupervisorProfileFactory(is_administrador=False)
        self.supervisor.user.set_password(self.PWD)
        self.supervisor.user.save()

        self.agente_profile = AgenteProfileFactory()
        self.agente_profile.user.set_password(self.PWD)
        self.agente_profile.user.is_agente = True
        self.agente_profile.user.save()

        self.campana_activa = CampanaFactory.create(
            estado=Campana.ESTADO_ACTIVA)
        self.campana_activa_supervisor = CampanaFactory.create(
            estado=Campana.ESTADO_ACTIVA)
        self.campana_activa_supervisor.supervisors.add(self.supervisor.user)
        self.campana_finalizada = CampanaFactory(
            estado=Campana.ESTADO_FINALIZADA)
        self.queue = QueueFactory.create(campana=self.campana_activa)
        QueueMemberFactory.create(member=self.agente_profile,
                                  queue_name=self.queue)
        self.sistema_externo = SistemaExternoFactory()
        self.opcion_calificacion = OpcionCalificacionFactory(
            campana=self.campana_activa)

        self.calificacion_cliente = CalificacionClienteFactory(
            opcion_calificacion=self.opcion_calificacion,
            agente=self.agente_profile)

        for user in User.objects.all():
            Token.objects.create(user=user)
Exemple #17
0
 def test_servicio_agentes_activos_entradas_menos_lineas_son_detectadas_y_excluidas(
         self, logger, _ami_manager, manager):
     self.campana_activa.supervisors.add(self.supervisor_admin.user)
     ag1 = self.agente_profile
     ag2, ag3, ag4 = AgenteProfileFactory.create_batch(3)
     QueueMemberFactory.create(member=ag2, queue_name=self.queue)
     QueueMemberFactory.create(member=ag3, queue_name=self.queue)
     QueueMemberFactory.create(member=ag4, queue_name=self.queue)
     self.client.login(username=self.supervisor_admin.user.username,
                       password=self.PWD)
     _ami_manager.return_value = (
         "/OML/AGENT/{0}/NAME                          : John Perkins\r\n".
         format(ag1.pk) +
         "/OML/AGENT/{0}/SIP                           : 1001\r\n".format(
             ag1.pk) +
         "/OML/AGENT/{0}/STATUS                        : READY:1582309100\r\n"
         .format(ag1.pk) +
         "/OML/AGENT/{0}/NAME                          : Silvia Pensive\r\n"
         .format(ag2.pk) +
         "/OML/AGENT/{0}/SIP                           : 1002\r\n".format(
             ag2.pk) +
         "/OML/AGENT/{0}/STATUS                        : PAUSE:1582309000\r\n"
         .format(ag2.pk) +
         "/OML/AGENT/{0}/NAME                          : Homero Simpson\r\n"
         .format(ag3.pk) +
         "/OML/AGENT/{0}/NAME                          : Marge Simpson\r\n".
         format(ag4.pk) +
         "/OML/AGENT/{0}/SIP                           : 1003\r\n".format(
             ag4.pk) +
         "/OML/AGENT/{0}/STATUS                        : PAUSE:1582309500\r\n"
         .format(ag4.pk) +
         "/OML/AGENT/{0}/SIP                           : 1004\r\n".format(
             ag4.pk) + "2 results found."), None
     url = reverse('api_agentes_activos')
     response = self.client.get(url)
     self.assertEqual(len(response.json()), 3)
Exemple #18
0
    def _crear_datos_entorno(self):

        self.admin = User.objects.filter(is_staff=True).first()

        # crear grupo
        grupo = GrupoFactory()

        # crear agente
        agente = AgenteProfileFactory(grupo=grupo, reported_by=self.admin)
        agente.user.username = self.agent_username
        agente.user.set_password(self.agent_password)
        agente.sip_extension = 1000 + agente.id
        agente.user.is_agente = True
        agente.user.save()
        agente.save()

        agente.user.groups.add(Group.objects.get(name='Agente'))

        asterisk_sip_service = ActivacionAgenteService()
        asterisk_sip_service.activar()

        # crear audio
        ArchivoDeAudioFactory()

        # crear pausa
        PausaFactory()

        # crear formulario (2 campos)
        form = FormularioFactory()
        FieldFormularioFactory.create_batch(2, formulario=form)

        # crear califs.(1 gestion y 1 normal)
        self.success = NombreCalificacionFactory(nombre='Success')
        self.angry = NombreCalificacionFactory(nombre='Hangs up angry')

        # crear BD (3 contactos)
        self.bd_contacto = BaseDatosContactoFactory()

        ContactoFactory.create_batch(3, bd_contacto=self.bd_contacto)

        campana_manual = self._crear_campana_manual()
        campana_entrante = self._crear_campana_entrante()

        activacion_queue_service = ActivacionQueueService()
        activacion_queue_service.activar()

        # crea un troncal y con este una ruta entrante hacia el pbx-emulator
        text_config = ("type=friend\n"
                       "host=pbx-emulator\n"
                       "defaultuser=01177660010\n"
                       "secret=OMLtraining72\n"
                       "qualify=yes\n"
                       "insecure=invite\n"
                       "context=from-pstn\n"
                       "disallow=all\n"
                       "allow=alaw\n")
        register_string = "01177660010:OMLtraining72@pbx-emulator"
        troncal_pbx_emulator = TroncalSIPFactory(
            text_config=text_config,
            register_string=register_string,
            canales_maximos=1000,
            caller_id='')
        sincronizador_troncal = SincronizadorDeConfiguracionTroncalSipEnAsterisk(
        )
        sincronizador_troncal.regenerar_troncales(troncal_pbx_emulator)
        ruta_saliente = RutaSalienteFactory(ring_time=25, dial_options="Tt")
        PatronDeDiscadoFactory(ruta_saliente=ruta_saliente, match_pattern="X.")
        OrdenTroncalFactory(ruta_saliente=ruta_saliente,
                            orden=0,
                            troncal=troncal_pbx_emulator)
        sincronizador_ruta_saliente = SincronizadorDeConfiguracionDeRutaSalienteEnAsterisk(
        )
        sincronizador_ruta_saliente.regenerar_asterisk(ruta_saliente)

        # crear ruta entrante
        self._crear_ruta_entrante(campana_entrante)
        self._asignar_agente_a_campana(agente, campana_manual)
        self._asignar_agente_a_campana(agente, campana_entrante)
Exemple #19
0
    def _crear_datos_entorno(self):

        admin = User.objects.filter(is_staff=True).first()

        # crear grupo
        grupo = GrupoFactory()

        # crear modulo
        modulo = ModuloFactory()

        # crear agente
        agente = AgenteProfileFactory(grupo=grupo, reported_by=admin)
        agente.modulos.add(modulo)
        agente.user.username = self.agent_username
        agente.user.set_password(self.agent_password)
        agente.sip_extension = 1000 + agente.id
        agente.user.is_agente = True
        agente.user.save()
        agente.save()

        asterisk_sip_service = ActivacionAgenteService()
        asterisk_sip_service.activar()

        # crear audio
        ArchivoDeAudioFactory()

        # crear pausa
        PausaFactory()

        # crear formulario (2 campos)
        form = FormularioFactory()
        FieldFormularioFactory.create_batch(2, formulario=form)

        # crear califs.(1 gestion y 1 normal)
        success = NombreCalificacionFactory(nombre='Success')
        angry = NombreCalificacionFactory(nombre='Hangs up angry')

        # crear BD (3 contactos)
        bd_contacto = BaseDatosContactoFactory()

        ContactoFactory.create_batch(3, bd_contacto=bd_contacto)

        # crear campaña manual
        campana_manual = CampanaFactory(
            nombre='test_manual_campaign', bd_contacto=bd_contacto, type=Campana.TYPE_MANUAL,
            reported_by=admin, es_manual=True, estado=Campana.ESTADO_ACTIVA
        )
        # crear Queue para la campaña
        Queue.objects.create(
            campana=campana_manual,
            name=campana_manual.nombre,
            maxlen=5,
            wrapuptime=5,
            servicelevel=30,
            strategy='rrmemory',
            eventmemberstatus=True,
            eventwhencalled=True,
            ringinuse=True,
            setinterfacevar=True,
            weight=0,
            wait=120
        )

        # opciones de calificacion
        OpcionCalificacionFactory(
            nombre=success.nombre, campana=campana_manual, tipo=OpcionCalificacion.GESTION)
        OpcionCalificacionFactory(
            nombre=angry.nombre, campana=campana_manual, tipo=OpcionCalificacion.NO_ACCION)

        activacion_queue_service = ActivacionQueueService()
        activacion_queue_service.activar()

        # crea un troncal y con este una ruta entrante hacia el pbx-emulator
        text_config = ("type=friend\n"
                       "host=pbx-emulator\n"
                       "defaultuser=01177660010\n"
                       "secret=OMLtraining72\n"
                       "qualify=yes\n"
                       "insecure=invite\n"
                       "context=from-pstn\n"
                       "disallow=all\n"
                       "allow=alaw\n")
        register_string = "01177660010:OMLtraining72@pbx-emulator"
        troncal_pbx_emulator = TroncalSIPFactory(
            text_config=text_config, register_string=register_string, canales_maximos=1000,
            caller_id='')
        sincronizador_troncal = SincronizadorDeConfiguracionTroncalSipEnAsterisk()
        sincronizador_troncal.regenerar_troncales(troncal_pbx_emulator)
        ruta_saliente = RutaSalienteFactory(ring_time=25, dial_options="Tt")
        PatronDeDiscadoFactory(ruta_saliente=ruta_saliente, match_pattern="X.")
        OrdenTroncalFactory(ruta_saliente=ruta_saliente, orden=0, troncal=troncal_pbx_emulator)
        sincronizador_ruta_saliente = SincronizadorDeConfiguracionDeRutaSalienteEnAsterisk()
        sincronizador_ruta_saliente.regenerar_rutas_salientes(ruta_saliente)
    def _crear_datos_entorno(self):

        self.admin = User.objects.filter(is_staff=True).first()

        # crear grupo
        grupo = GrupoFactory()

        # crear agente
        agente = AgenteProfileFactory(grupo=grupo, reported_by=self.admin)
        agente.user.username = self.agent_username
        agente.user.set_password(self.agent_password)
        agente.sip_extension = 1000 + agente.user.id
        agente.user.is_agente = True
        agente.user.save()
        agente.save()

        agente.user.groups.add(Group.objects.get(name='Agente'))

        asterisk_sip_service = ActivacionAgenteService()
        asterisk_sip_service.activar()

        # crear audio
        ArchivoDeAudioFactory()

        # crear pausa
        PausaFactory()

        # crear formulario (2 campos)
        form = FormularioFactory()
        FieldFormularioFactory.create_batch(2, formulario=form)

        # crear califs.(1 gestion y 1 normal)
        self.success = NombreCalificacionFactory(nombre='Success')
        self.angry = NombreCalificacionFactory(nombre='Hangs up angry')

        # crear BD (3 contactos)
        self.bd_contacto = BaseDatosContactoFactory()

        ContactoFactory.create_batch(3, bd_contacto=self.bd_contacto)

        campana_manual = self._crear_campana_manual()
        campana_entrante = self._crear_campana_entrante()

        activacion_queue_service = ActivacionQueueService()
        activacion_queue_service.activar()

        # crea un troncal y con este una ruta entrante hacia el pbx-emulator
        text_config = ("type=wizard\n"
                       "transport=trunk-transport\n"
                       "accepts_registrations=no\n"
                       "accepts_auth=no\n"
                       "sends_registrations=yes\n"
                       "sends_auth=yes\n"
                       "endpoint/rtp_symmetric=no\n"
                       "endpoint/force_rport=no\n"
                       "endpoint/rewrite_contact=yes\n"
                       "endpoint/timers=yes\n"
                       "aor/qualify_frequency=60\n"
                       "endpoint/allow=alaw,ulaw\n"
                       "endpoint/dtmf_mode=rfc4733\n"
                       "endpoint/context=from-pstn\n"
                       "remote_hosts=pbxemulator:5060\n"
                       "outbound_auth/username=01177660010\n"
                       "outbound_auth/password=OMLtraining72\n")
        troncal_pbx_emulator = TroncalSIPFactory(text_config=text_config,
                                                 canales_maximos=1000,
                                                 tecnologia=1,
                                                 caller_id='')
        sincronizador_troncal = SincronizadorDeConfiguracionTroncalSipEnAsterisk(
        )
        sincronizador_troncal.regenerar_troncales(troncal_pbx_emulator)
        ruta_saliente = RutaSalienteFactory(ring_time=25, dial_options="Tt")
        PatronDeDiscadoFactory(ruta_saliente=ruta_saliente, match_pattern="X.")
        OrdenTroncalFactory(ruta_saliente=ruta_saliente,
                            orden=0,
                            troncal=troncal_pbx_emulator)
        sincronizador_ruta_saliente = SincronizadorDeConfiguracionDeRutaSalienteEnAsterisk(
        )
        sincronizador_ruta_saliente.regenerar_asterisk(ruta_saliente)

        # crear ruta entrante
        self._crear_ruta_entrante(campana_entrante)
        self._asignar_agente_a_campana(agente, campana_manual)
        self._asignar_agente_a_campana(agente, campana_entrante)