Esempio n. 1
0
    def test_servicio_agentes_activos_no_muestra_entradas_con_menos_campos(
            self, Redis):
        ag1_pk = self.agente_profile.pk
        self.campana_activa.supervisors.add(self.supervisor_admin.user)
        ag2 = self.crear_agente_profile()
        QueueMemberFactory.create(member=ag2, queue_name=self.queue)
        key1 = 'OML:AGENT:{0}'.format(ag1_pk)
        key2 = 'OML:AGENT:{0}'.format(ag2.pk)
        key3 = 'OML:SUPERVISOR:{0}'.format(self.supervisor_admin.pk)
        now = datetime.now()
        timestamp = datetime.timestamp(now)
        key1_value = {
            'STATUS': 'READY',
            'NAME': self.agente_profile.user.get_full_name(),
            'SIP': self.agente_profile.sip_extension
        }
        key2_value = {
            'TIMESTAMP': timestamp,
            'NAME': ag2.user.get_full_name(),
            'SIP': ag2.sip_extension
        }
        key3_value = {
            str(ag1_pk): json.dumps({
                'grupo': self.agente_profile.grupo.nombre,
                'campana': [self.campana_activa.nombre, ]})
        }
        Redis = self.set_redis_mock_return_values(
            Redis, [key1, key2, key3], [key1_value, key2_value, key3_value])

        self.client.login(username=self.supervisor_admin.user.username, password=PASSWORD)
        url = reverse('api_agentes_activos')
        response = self.client.get(url)
        response_json = response.json()
        self.assertEqual(len(response_json), 0)
Esempio n. 2
0
    def test_servicio_agentes_activos_no_muestra_entradas_status_vacio(
            self, Redis):
        ag1_pk = self.agente_profile.pk
        self.campana_activa.supervisors.add(self.supervisor_admin.user)
        ag2 = self.crear_agente_profile()
        QueueMemberFactory.create(member=ag2, queue_name=self.queue)
        key1 = 'OML:AGENT:{0}'.format(ag1_pk)
        key2 = 'OML:AGENT:{0}'.format(ag2.pk)
        now = datetime.now()
        timestamp = datetime.timestamp(now)
        key1_value = {
            'TIMESTAMP': timestamp,
            'STATUS': 'READY',
            'NAME': self.agente_profile.user.get_full_name(),
            'SIP': self.agente_profile.sip_extension
        }
        key2_value = {
            'TIMESTAMP': timestamp,
            'NAME': ag2.user.get_full_name(),
            'SIP': ag2.sip_extension
        }

        Redis = self.set_redis_mock_return_values(Redis, [key1, key2],
                                                  [key1_value, key2_value])

        self.client.login(username=self.supervisor_admin.user.username,
                          password=PASSWORD)
        url = reverse('api_agentes_activos')
        response = self.client.get(url)
        response_json = response.json()
        ag_value = response_json[0]
        self.assertEqual(len(response_json), 1)
        self.assertEqual(ag_value['id'], ag1_pk)
Esempio n. 3
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))
Esempio n. 4
0
    def setUp(self):

        self.sistema_externo = SistemaExternoFactory()
        self.sistema_externo_2 = SistemaExternoFactory()
        usr_supervisor = self.crear_user_supervisor(username='******')
        self.crear_supervisor_profile(usr_supervisor)
        usr_agente = self.crear_user_agente(username='******')
        self.agente = self.crear_agente_profile(usr_agente)
        self.client.login(username=usr_agente.username, password=self.PWD)
        self.agente_2 = self.crear_agente_profile()

        self.campana = self.crear_campana_manual(cant_contactos=3,
                                                 user=usr_supervisor)
        self.campana.sistema_externo = self.sistema_externo
        self.campana.id_externo = 'c1'
        self.campana.estado = Campana.ESTADO_ACTIVA
        self.campana.save()

        self.campana_2 = self.crear_campana_manual(cant_contactos=3,
                                                   user=usr_supervisor)
        self.campana_2.sistema_externo = self.sistema_externo
        self.campana_2.estado = Campana.ESTADO_ACTIVA
        self.campana_2.save()

        # queue_campana = QueueFactory(campana=self.campana)
        QueueMemberFactory.create(member=self.agente,
                                  queue_name=self.campana.queue_campana)
        QueueMemberFactory.create(member=self.agente_2,
                                  queue_name=self.campana_2.queue_campana)

        agente_externo_1 = AgenteEnSistemaExterno(
            agente=self.agente,
            sistema_externo=self.sistema_externo,
            id_externo_agente='id_ag_1')
        agente_externo_1.save()
        agente_externo_2 = AgenteEnSistemaExterno(
            agente=self.agente_2,
            sistema_externo=self.sistema_externo_2,
            id_externo_agente='id_ag_2')
        agente_externo_2.save()
        self.contacto_1 = self.campana.bd_contacto.contactos.first()
        self.contacto_1.id_externo = 'c1'
        self.contacto_1.save()

        bd_contacto = self.crear_base_datos_contacto(cant_contactos=3)
        self.contacto_2 = bd_contacto.contactos.first()

        self.post_data_oml = {
            'idCampaign': str(self.campana.id),
            'idAgent': str(self.agente.id),
            'idContact': str(self.contacto_1.id),
            'phone': '3511111111',
        }
        self.post_data_externo = {
            'idExternalSystem': str(self.sistema_externo.id),
            'idCampaign': str(self.campana.id_externo),
            'idAgent': 'id_ag_1',
            'idContact': str(self.contacto_1.id_externo),
            'phone': '35111111111',
        }
Esempio n. 5
0
    def setUp(self):
        super(CalificacionTests, self).setUp()

        self.agente_profile = self.crear_agente_profile()
        self.usuario_agente = self.agente_profile.user

        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.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=PASSWORD)
Esempio n. 6
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'])
Esempio n. 7
0
    def test_creacion_usuario_preview_por_supervisor_crea_agente_en_contacto(
            self):
        usr_supervisor = self.campana.reported_by
        campana = CampanaFactory(type=Campana.TYPE_PREVIEW,
                                 estado=Campana.ESTADO_ACTIVA,
                                 bd_contacto=self.campana.bd_contacto,
                                 reported_by=usr_supervisor)
        campana.supervisors.add(usr_supervisor)
        QueueFactory(campana=campana)
        QueueMemberFactory.create(member=self.agente,
                                  queue_name=campana.queue_campana)
        self.client.logout()
        self.client.login(username=usr_supervisor.username, password=self.PWD)

        post_data = self.post_data_contacto
        post_data['idCampaign'] = str(campana.id)
        response = self.client.post(self.URL,
                                    json.dumps(post_data),
                                    format='json',
                                    content_type='application/json')

        self.assertEqual(response.status_code, 200)
        agente_en_contacto = AgenteEnContacto.objects.filter(
            campana_id=campana.id,
            contacto_id=response.json()['id'],
            agente_id=-1,
            es_originario=True)
        self.assertEqual(agente_en_contacto.count(), 1)
Esempio n. 8
0
 def _hacer_miembro(self, usuario_agente, campana):
     agente = usuario_agente.get_agente_profile()
     queue = QueueFactory.create(campana=campana)
     QueueMemberFactory.create(member=agente,
                               queue_name=queue,
                               id_campana='{0}_{1}'.format(
                                   campana.pk, campana.nombre))
Esempio n. 9
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
Esempio n. 10
0
    def setUp(self):
        super(APITest, self).setUp()
        self.factory = RequestFactory()

        self.supervisor_admin = self.crear_supervisor_profile(
            rol=User.ADMINISTRADOR)
        self.supervisor = self.crear_supervisor_profile(rol=User.SUPERVISOR)
        self.agente_profile = self.crear_agente_profile()

        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)
        self.queue2 = QueueFactory.create(
            campana=self.campana_activa_supervisor)
        self.queue3 = QueueFactory.create(campana=self.campana_finalizada)
        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)
Esempio n. 11
0
 def test_servicio_agentes_activos_no_incluye_entradas_lineas_status_vacio(
         self, logger, ami_connect, ami_disconnect, _ami_manager, manager):
     ami_connect.return_value = False
     ami_disconnect.return_value = False
     self.campana_activa.supervisors.add(self.supervisor_admin.user)
     ag1 = self.agente_profile
     ag10 = self.crear_agente_profile()
     ag11 = self.crear_agente_profile()
     QueueMemberFactory.create(member=ag10, queue_name=self.queue)
     QueueMemberFactory.create(member=ag11, queue_name=self.queue)
     self.client.login(username=self.supervisor_admin.user.username,
                       password=PASSWORD)
     _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                      : \r\n".format(
             ag1.pk) + ""
         "/OML/AGENT/{0}/NAME                        : Agente10 \n".format(
             ag10.pk) + ""
         "/OML/AGENT/{0}/SIP                         : 1013\r\n".format(
             ag10.pk) + ""
         "/OML/AGENT/{0}/STATUS                      : \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)
     self.assertEqual(len(response.json()), 1)
Esempio n. 12
0
 def test_servicio_agentes_activos_detecta_grupos_headers_incompletos(
         self, logger, ami_connect, ami_disconnect, _ami_manager, manager):
     ami_connect.return_value = False
     ami_disconnect.return_value = False
     self.campana_activa.supervisors.add(self.supervisor_admin.user)
     ag1 = self.agente_profile
     ag2 = self.crear_agente_profile()
     QueueMemberFactory.create(member=ag2, queue_name=self.queue)
     self.client.login(username=self.supervisor_admin.user.username,
                       password=PASSWORD)
     _ami_manager.return_value = (
         "/OML/AGENT/{0}/NAME                         : John Perkins\r\n".
         format(ag1.pk) + ""
         "/OML/AGENT/{0}/SIP                          : \r\n".format(
             ag1.pk) + ""
         "/OML/AGENT/{0}/STATUS                       : READY:1582309000\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)
Esempio n. 13
0
 def test_servicio_agentes_activos_detecta_grupos_menos_lineas_previstas(
         self, ami_connect, ami_disconnect, _ami_manager, manager):
     self.campana_activa.supervisors.add(self.supervisor_admin.user)
     ag1 = self.agente_profile
     ag2 = self.crear_agente_profile()
     QueueMemberFactory.create(member=ag2, queue_name=self.queue)
     self.client.login(username=self.supervisor_admin.user.username,
                       password=PASSWORD)
     ami_connect.return_value = False
     ami_disconnect.return_value = False
     _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')
Esempio n. 14
0
    def setUp(self):
        self.supervisor1 = self.crear_supervisor_profile(rol=User.SUPERVISOR)
        self.supervisor2 = self.crear_supervisor_profile(rol=User.SUPERVISOR)

        self.agente1 = self.crear_agente_profile()
        self.agente2 = self.crear_agente_profile()

        self.campana1 = CampanaFactory(estado=Campana.ESTADO_ACTIVA)
        self.queue_campana_1 = QueueFactory(campana=self.campana1)
        QueueMemberFactory(member=self.agente1,
                           queue_name=self.queue_campana_1)
        self.campana1.supervisors.add(self.supervisor1.user)

        self.campana2 = CampanaFactory(estado=Campana.ESTADO_ACTIVA)
        self.queue_campana_2 = QueueFactory(campana=self.campana2)
        QueueMemberFactory(member=self.agente2,
                           queue_name=self.queue_campana_2)
        self.campana2.supervisors.add(self.supervisor2.user)

        self.contacto = ContactoFactory(id_externo='id_ext')
        self.campana3 = CampanaFactory(estado=Campana.ESTADO_ACTIVA)
        self.campana3.bd_contacto.genera_contactos([self.contacto])
        self.campana3.supervisors.add(self.supervisor1.user)

        self.opcion_calificacion = OpcionCalificacionFactory(
            campana=self.campana1, tipo=OpcionCalificacion.GESTION)
        self.calificacion = CalificacionClienteFactory(
            opcion_calificacion=self.opcion_calificacion)
        update_change_reason(self.calificacion, 'calificacion')
        self.grabacion1 = GrabacionFactory.create(
            duracion=1,
            agente=self.agente1,
            callid=self.calificacion.callid,
            campana=self.campana1,
            id_cliente='-1')
        self.grabacion2 = GrabacionFactory(duracion=1,
                                           agente=self.agente1,
                                           campana=self.campana1)
        self.grabacion3 = GrabacionFactory(duracion=1,
                                           agente=self.agente1,
                                           campana=self.campana1)
        self.marca_campana1 = GrabacionMarcaFactory(
            callid=self.grabacion1.callid)
        self.marca_campana2 = GrabacionMarcaFactory(
            callid=self.grabacion2.callid)

        self.grabacion2_1 = GrabacionFactory.create(duracion=1,
                                                    agente=self.agente2,
                                                    campana=self.campana2)
        self.marca_campana2_1 = GrabacionMarcaFactory(
            callid=self.grabacion2_1.callid)

        self.grabacion3_1 = GrabacionFactory.create(
            tel_cliente=self.contacto.telefono,
            agente=self.agente2,
            campana=self.campana3)
Esempio n. 15
0
    def test_contabilizar_agentes_llamada(
            self, obtener_agentes_activos,
            obtener_estadisticas_campanas_entrantes):
        obtener_agentes_activos.return_value = self._obtener_agentes_activos()
        obtener_estadisticas_campanas_entrantes.return_value = self._obtener_estadisticas_redis(
        )
        QueueMemberFactory.create(member=self.agente2, queue_name=self.queue)

        reporte = ReporteDeLLamadasEntrantesDeSupervision(self.supervisor.user)
        self.assertEqual(
            reporte.estadisticas[self.entrante1.id]['agentes_llamada'], 1)
Esempio n. 16
0
    def _setUp_campana_dialer(self):
        self.campana_dialer = CampanaFactory.create(type=Campana.TYPE_DIALER)
        self.campana_dialer.opciones_calificacion.add(self.opcion_calificacion_gestion)
        self.campana_dialer.opciones_calificacion.add(self.opcion_calificacion_agenda)

        self.contacto_dialer = ContactoFactory.create()
        self.campana_dialer.bd_contacto.contactos.add(self.contacto_dialer)

        self.queue_dialer = QueueFactory.create(campana=self.campana_dialer)

        QueueMemberFactory.create(member=self.agente_profile, queue_name=self.queue_dialer)
Esempio n. 17
0
 def test_api_campanas_supervisor_admin_filtro_agente(self):
     self.client.login(username=self.supervisor_admin.user.username,
                       password=PASSWORD)
     url = reverse('api_campanas_de_supervisor')
     QueueMemberFactory.create(
         member=self.agente_profile,
         queue_name=self.campana_activa_supervisor.queue_campana)
     response = self.client.get(url, {'agent': self.agente_profile.id})
     ids_campanas_esperadas = set(
         (self.campana_activa.id, self.campana_activa_supervisor.id))
     ids_campanas_devueltas = set(
         [campana['id'] for campana in response.data])
     self.assertEqual(ids_campanas_esperadas, ids_campanas_devueltas)
    def setUp(self):
        super(StatusCalificacionLlamadaTest, self).setUp()
        user = self.crear_user_agente(username='******')
        self.agente = self.crear_agente_profile(user)
        self.agente.grupo.obligar_calificacion = True
        self.client.login(username=user.username, password=PASSWORD)

        self.campana = CampanaFactory.create()
        QueueFactory(campana=self.campana)
        QueueMemberFactory.create(member=self.agente,
                                  queue_name=self.campana.queue_campana)
        self.contacto = ContactoFactory.create()
        self.campana.bd_contacto.contactos.add(self.contacto)
Esempio n. 19
0
 def test_creacion_usuario_preview_por_agente_crea_agente_en_contacto(self):
     campana = CampanaFactory(type=Campana.TYPE_PREVIEW, estado=Campana.ESTADO_ACTIVA,
                              bd_contacto=self.campana.bd_contacto)
     QueueFactory(campana=campana)
     QueueMemberFactory.create(member=self.agente, queue_name=campana.queue_campana)
     post_data = self.post_data_contacto
     post_data['idCampaign'] = str(campana.id)
     response = self.client.post(self.URL, json.dumps(post_data),
                                 format='json', content_type='application/json')
     self.assertEqual(response.status_code, 200)
     agente_en_contacto = AgenteEnContacto.objects.filter(
         campana_id=campana.id, contacto_id=response.json()['id'],
         agente_id=self.agente.id, es_originario=False)
     self.assertEqual(agente_en_contacto.count(), 1)
Esempio n. 20
0
    def setUp(self):
        super(CalificacionTests, self).setUp()

        self.agente_1 = self.crear_agente_profile()
        self.agente_2 = self.crear_agente_profile()
        self.agente_3 = self.crear_agente_profile()
        self.supervisor = self.crear_supervisor_profile()

        self.campana = CampanaFactory.create(estado=Campana.ESTADO_ACTIVA,
                                             type=Campana.TYPE_MANUAL)
        self.campana.supervisors.add(self.supervisor.user)

        self.nombre_calificacion_agenda = NombreCalificacion.objects.get(
            nombre=settings.CALIFICACION_REAGENDA)
        self.opcion_calificacion_agenda = OpcionCalificacionFactory.create(
            campana=self.campana,
            nombre=self.nombre_calificacion_agenda.nombre,
            tipo=OpcionCalificacion.AGENDA)

        self.contacto_1 = ContactoFactory.create()
        self.campana.bd_contacto.contactos.add(self.contacto_1)
        self.contacto_2 = ContactoFactory.create()
        self.campana.bd_contacto.contactos.add(self.contacto_2)

        self.calificacion_1 = CalificacionClienteFactory(
            opcion_calificacion=self.opcion_calificacion_agenda,
            agente=self.agente_1,
            contacto=self.contacto_1)
        self.agenda_1 = AgendaContactoFactory(
            agente=self.agente_1,
            contacto=self.contacto_1,
            campana=self.campana,
            tipo_agenda=AgendaContacto.TYPE_PERSONAL)
        self.calificacion_2 = CalificacionClienteFactory(
            opcion_calificacion=self.opcion_calificacion_agenda,
            agente=self.agente_2,
            contacto=self.contacto_2)
        self.agenda_2 = AgendaContactoFactory(
            agente=self.agente_2,
            contacto=self.contacto_2,
            campana=self.campana,
            tipo_agenda=AgendaContacto.TYPE_PERSONAL)

        self.queue = QueueFactory.create(campana=self.campana)
        QueueMemberFactory.create(member=self.agente_1, queue_name=self.queue)
        QueueMemberFactory.create(member=self.agente_2, queue_name=self.queue)

        self.client.login(username=self.supervisor.user.username,
                          password=PASSWORD)
Esempio n. 21
0
    def setUp(self):
        super(AuditoriasCalificacionesTests, self).setUp()

        self.campana1 = CampanaFactory(estado=Campana.ESTADO_ACTIVA)
        self.campana2 = CampanaFactory(estado=Campana.ESTADO_ACTIVA)
        self.campana3 = CampanaFactory(estado=Campana.ESTADO_ACTIVA)

        self.supervisor1 = self.crear_supervisor_profile(rol=User.GERENTE)
        self.supervisor2 = self.crear_supervisor_profile(rol=User.GERENTE)
        self.supervisor3 = self.crear_supervisor_profile(rol=User.SUPERVISOR)
        self.supervisor4 = self.crear_supervisor_profile(rol=User.REFERENTE)

        # calificaciones y auditorias de gestion para campana1
        opcion_calificacion11 = OpcionCalificacionFactory(
            campana=self.campana1, tipo=OpcionCalificacion.GESTION)
        self.calificacion11 = CalificacionClienteFactory(
            opcion_calificacion=opcion_calificacion11)

        # calificacion de gestion para campana2
        opcion_calificacion21_gestion = OpcionCalificacionFactory(
            campana=self.campana2, tipo=OpcionCalificacion.GESTION)
        opcion_calificacion21_no_accion = OpcionCalificacionFactory(
            campana=self.campana2, tipo=OpcionCalificacion.NO_ACCION)
        self.calificacion21 = CalificacionClienteFactory(
            opcion_calificacion=opcion_calificacion21_no_accion)
        self.calificacion22 = CalificacionClienteFactory(
            opcion_calificacion=opcion_calificacion21_gestion)
        self.calificacion23 = CalificacionClienteFactory(
            opcion_calificacion=opcion_calificacion21_gestion)
        self.calificacion24 = CalificacionClienteFactory(
            opcion_calificacion=opcion_calificacion21_gestion)
        self.calificacion25 = CalificacionClienteFactory(
            opcion_calificacion=opcion_calificacion21_gestion)
        self.queue_campana_2 = QueueFactory(campana=self.campana2)
        QueueMemberFactory(member=self.calificacion25.agente,
                           queue_name=self.queue_campana_2)

        self.auditoria_aprobada = AuditoriaCalificacionFactory(
            calificacion=self.calificacion23,
            resultado=AuditoriaCalificacion.APROBADA)
        self.auditoria_rechazada = AuditoriaCalificacionFactory(
            calificacion=self.calificacion24,
            resultado=AuditoriaCalificacion.RECHAZADA)
        self.auditoria_rechazada = AuditoriaCalificacionFactory(
            calificacion=self.calificacion25,
            resultado=AuditoriaCalificacion.OBSERVADA)

        self.campana2.supervisors.add(self.supervisor2.user)
        self.campana3.supervisors.add(self.supervisor2.user)

        # calificacion de gestion para campana2
        opcion_calificacion31_gestion = OpcionCalificacionFactory(
            campana=self.campana3, tipo=OpcionCalificacion.GESTION)
        self.calificacion31 = CalificacionClienteFactory(
            opcion_calificacion=opcion_calificacion31_gestion)

        self.client.login(username=self.supervisor2.user,
                          password=self.DEFAULT_PASSWORD)
Esempio n. 22
0
    def setUp(self):
        super(APITest, self).setUp()
        self.factory = RequestFactory()

        self.supervisor_admin = self.crear_supervisor_profile(
            rol=User.ADMINISTRADOR)
        self.supervisor = self.crear_supervisor_profile(rol=User.SUPERVISOR)
        self.agente_profile = self.crear_agente_profile()

        self.campana_activa = CampanaFactory.create(
            estado=Campana.ESTADO_ACTIVA,
            type=Campana.TYPE_MANUAL,
            nombre='activa uno')
        self.campana_activa_2 = CampanaFactory.create(
            estado=Campana.ESTADO_ACTIVA,
            type=Campana.TYPE_PREVIEW,
            nombre='activa dos')
        self.campana_activa_supervisor = CampanaFactory.create(
            estado=Campana.ESTADO_ACTIVA,
            type=Campana.TYPE_ENTRANTE,
            nombre='activa supervisor uno')
        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)
        self.queue1 = QueueFactory.create(campana=self.campana_activa_2)
        self.queue2 = QueueFactory.create(
            campana=self.campana_activa_supervisor)
        self.queue3 = QueueFactory.create(campana=self.campana_finalizada)
        QueueMemberFactory.create(member=self.agente_profile,
                                  queue_name=self.queue)
        self.sistema_externo = SistemaExternoFactory()
        self.opcion_calificacion = OpcionCalificacionFactory(
            campana=self.campana_activa)

        self.contacto = ContactoFactory(
            bd_contacto=self.campana_activa.bd_contacto)
        self.calificacion_cliente = CalificacionClienteFactory(
            opcion_calificacion=self.opcion_calificacion,
            agente=self.agente_profile,
            contacto=self.contacto)

        for user in User.objects.all():
            Token.objects.create(user=user)
Esempio n. 23
0
 def setUp(self, _convertir_audio):
     base_datos = self.crear_base_datos_contacto(cant_contactos=100)
     user_agente = self.crear_user_agente()
     self.agente = self.crear_agente_profile(user_agente)
     self.campana = self.crear_campana(type=Campana.TYPE_PREVIEW,
                                       bd_contactos=base_datos)
     self.queue_campana = QueueFactory(campana=self.campana)
     self.queue_member = QueueMemberFactory(member=self.agente,
                                            queue_name=self.queue_campana)
     self.estados = LlamadaLog.EVENTOS_NO_CONTACTACION
Esempio n. 24
0
    def setUp(self):
        super(ABMUsuariosTest, self).setUp()
        self.admin = self.crear_administrador(username='******')
        self.gerente = self.crear_supervisor_profile(rol=User.GERENTE,
                                                     user=None)
        self.supervisor = self.crear_supervisor_profile(rol=User.SUPERVISOR,
                                                        user=None)

        self.grupo1 = GrupoFactory(nombre='grupo1')
        self.rol_gerente = Group.objects.get(name=User.GERENTE)
        self.rol_supervisor = Group.objects.get(name=User.SUPERVISOR)
        self.rol_agente = Group.objects.get(name=User.AGENTE)
        self.client.login(username=self.admin.username, password=PASSWORD)

        self.agente = self.crear_agente_profile()
        self.campana = CampanaFactory(estado=Campana.ESTADO_ACTIVA,
                                      type=Campana.TYPE_MANUAL)
        QueueFactory(campana=self.campana)
        QueueMemberFactory.create(member=self.agente,
                                  queue_name=self.campana.queue_campana)
Esempio n. 25
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')
Esempio n. 26
0
    def test_ve_solamente_grabaciones_propias_antes_de_filtrar(self):
        agente3 = self.crear_agente_profile()
        QueueMemberFactory(member=agente3, queue_name=self.queue_campana_1)
        grabacion3_3 = GrabacionFactory.create(
            duracion=1, agente=agente3, campana=self.campana1)

        url = reverse('grabacion_agente_buscar', kwargs={'pagina': 1})
        response = self.client.get(url, follow=True)

        self.assertContains(response, self.grabacion1.tel_cliente)
        self.assertContains(response, self.grabacion2.tel_cliente)
        self.assertContains(response, self.grabacion3.tel_cliente)
        self.assertNotContains(response, grabacion3_3.tel_cliente)
Esempio n. 27
0
    def test_calificar_usando_opcion_con_regla_de_incidencia_impacta_wombat(
            self, set_call_ext_status):
        agente = self.crear_agente_profile()
        self.client.logout()
        self.client.login(username=agente.user.username, password=PASSWORD)
        queue = QueueFactory.create(campana=self.campana)
        QueueMemberFactory.create(member=agente, queue_name=queue)

        dialer_call_id = '12345'
        regla = ReglaIncidenciaPorCalificacion(
            opcion_calificacion=self.opcion_calificacion_1,
            intento_max=5,
            reintentar_tarde=60,
            en_modo=ReglaIncidenciaPorCalificacion.FIXED)
        regla.save()
        call_data = {
            "id_campana": self.campana.id,
            "campana_type": self.campana.type,
            "telefono": "3512349992",
            "call_id": '123456789',
            "call_type": "1",
            "id_contacto": self.contacto.id,
            "rec_filename": "",
            "call_wait_duration": "",
            'dialer_id': dialer_call_id,
        }
        url = reverse('calificar_llamada',
                      kwargs={'call_data_json': json.dumps(call_data)})

        post_data = {
            'opcion_calificacion': self.opcion_calificacion_1.id,
            'contacto_form-telefono': self.contacto.telefono,
        }
        response = self.client.post(url, post_data, follow=True)
        self.assertEqual(response.status_code, 200)

        url_notify = '/api/calls/?op=extstatus&wombatid={0}&status={1}'.format(
            dialer_call_id, regla.wombat_id)
        set_call_ext_status.assert_called_with(url_notify)
Esempio n. 28
0
    def test_ve_solamente_grabaciones_propias_antes_de_filtrar(self):
        agente3 = self.crear_agente_profile()
        QueueMemberFactory(member=agente3, queue_name=self.queue_campana_1)
        llamada_log3_3 = LlamadaLogFactory.create(duracion_llamada=1,
                                                  agente_id=agente3.id,
                                                  campana_id=self.campana1.id)

        url = reverse('grabacion_agente_buscar', kwargs={'pagina': 1})
        response = self.client.get(url, follow=True)

        self.assertContains(response, self.llamada_log1.numero_marcado)
        self.assertContains(response, self.llamada_log2.numero_marcado)
        self.assertContains(response, self.llamada_log3.numero_marcado)
        self.assertNotContains(response, llamada_log3_3.numero_marcado)
Esempio n. 29
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)
Esempio n. 30
0
 def test_servicio_agentes_activos_entradas_mixtas_lineas_pause_id_aceptadas(
         self, logger, ami_connect, ami_disconnect, _ami_manager, manager):
     ami_connect.return_value = False
     ami_disconnect.return_value = False
     ag1_pk = self.agente_profile.pk
     self.campana_activa.supervisors.add(self.supervisor_admin.user)
     ag2 = self.crear_agente_profile()
     ag3 = self.crear_agente_profile()
     ag4 = self.crear_agente_profile()
     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=PASSWORD)
     _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')