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)
Esempio n. 2
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)
Esempio n. 3
0
 def test_llamada_manual_telefono_con_n_contactos_redirecciona_vista_escoger_contacto(self):
     contacto = self.contacto
     ContactoFactory(bd_contacto=self.campana.bd_contacto, telefono=contacto.telefono)
     telefono = contacto.telefono
     url = reverse('calificar_por_telefono',
                   kwargs={'pk_campana': self.campana.pk,
                           'telefono': telefono})
     response = self.client.get(url, follow=True)
     self.assertTemplateUsed(response, 'agente/contactos_telefonos_repetidos.html')
Esempio n. 4
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. 5
0
 def test_api_vista_contactos_campanas_es_accessible_usando_token_agente(self):
     ContactoFactory(bd_contacto=self.campana_activa.bd_contacto)
     token_agente = Token.objects.get(user=self.agente_profile.user).key
     client = APIClient()
     client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_agente)
     url = reverse('api_contactos_campana', args=(self.campana_activa.pk,))
     response = client.get(url, {'search[value]': 1, 'start': 1, 'length': 10, 'draw': 10},
                           format='json')
     self.assertEqual(response.status_code, 200)
     self.assertEqual(response.data['recordsTotal'], 1)
Esempio n. 6
0
 def test_api_muestra_solo_las_calificaciones_que_ha_hecho_el_agente_que_accede(self):
     contacto_nuevo = ContactoFactory(bd_contacto=self.campana_activa.bd_contacto)
     CalificacionClienteFactory(
         opcion_calificacion=self.opcion_calificacion, contacto=contacto_nuevo)
     token_agente = Token.objects.get(user=self.agente_profile.user).key
     client = APIClient()
     client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_agente)
     url = reverse('api_disposition-list')
     response = client.get(url)
     self.assertEqual(response.status_code, 200)
     self.assertEqual(len(response.data), 1)
Esempio n. 7
0
 def setUp(self, *args, **kwargs):
     self.agente = self.crear_agente_profile()
     self.sitio_externo = SitioExternoFactory()
     self.campana = CampanaFactory(sitio_externo=self.sitio_externo,
                                   tipo_interaccion=2)
     self.contacto = ContactoFactory()
     self.call_data = {
         'call_id': '1234',
         'agent_id': str(self.agente.id),
         'telefono': '351351351',
         'id_contacto': str(self.contacto.id),
         'rec_filename': 'rec_filename',
         'call_wait_duration': '44',
     }
     super(TestsSitioExterno, self).setUp(*args, **kwargs)
Esempio n. 8
0
 def test_api_adiciona_calificacion_ids_internos(self):
     token_agente = Token.objects.get(user=self.agente_profile.user).key
     client = APIClient()
     client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_agente)
     observaciones = 'calificacion externa'
     contacto = ContactoFactory(bd_contacto=self.campana_activa.bd_contacto)
     url = reverse('api_disposition-list')
     post_data = {
         'idContact': contacto.pk,
         'idDispositionOption': self.opcion_calificacion.pk,
         'comments': observaciones
     }
     calificaciones_count = CalificacionCliente.objects.count()
     client.post(url, post_data)
     self.assertEqual(CalificacionCliente.objects.count(), calificaciones_count + 1)
    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,
        ]
Esempio n. 10
0
 def test_api_adiciona_calificacion_ids_internos_no_se_accede_credenciales_no_agente(self):
     observaciones = 'calificacion externa'
     contacto = ContactoFactory(bd_contacto=self.campana_activa.bd_contacto)
     url = reverse('api_disposition-list')
     post_data = {
         'idContact': contacto.pk,
         'idAgent': self.agente_profile.pk,
         'idDispositionOption': self.opcion_calificacion.pk,
         'comments': observaciones
     }
     token_supervisor = Token.objects.get(user=self.supervisor_admin.user).key
     client = APIClient()
     client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_supervisor)
     url = reverse('api_disposition-list')
     response = client.post(url, post_data)
     self.assertEqual(response.status_code, 403)
 def test_modificacion_contacto_desde_lista_de_contactos_actualiza_agente_en_contacto(self):
     contacto = ContactoFactory()
     agente_en_contacto = AgenteEnContactoFactory(
         contacto_id=contacto.pk, campana_id=self.campana_preview.id,
         telefono_contacto=contacto.telefono)
     telefono_nuevo = contacto.telefono + '111'
     self.assertEqual(agente_en_contacto.telefono_contacto, contacto.telefono)
     url = reverse('contacto_update', args=[self.campana_preview.pk, contacto.pk])
     post_data = {
         'telefono': telefono_nuevo,
         'datos': str(["xxxxxx", "yyyyy", "CORDOBA", "21000003"]),
     }
     self.client.post(url, post_data)
     contacto.refresh_from_db()
     self.assertEqual(contacto.telefono, str(telefono_nuevo))
     agente_en_contacto.refresh_from_db()
     self.assertEqual(agente_en_contacto.telefono_contacto, str(telefono_nuevo))
Esempio n. 12
0
 def test_api_adiciona_calificacion_ids_externos(self):
     self.client.login(username=self.agente_profile.user.username, password=PASSWORD)
     observaciones = 'calificacion externa'
     id_contacto_externo = 'contacto_externo_1'
     AgenteEnSistemaExternoFactory(
         agente=self.agente_profile, sistema_externo=self.sistema_externo)
     ContactoFactory(bd_contacto=self.campana_activa.bd_contacto,
                     id_externo=id_contacto_externo)
     url = reverse('api_disposition-list')
     post_data = {
         'idExternalSystem': self.sistema_externo.pk,
         'idContact': id_contacto_externo,
         'idDispositionOption': self.opcion_calificacion.pk,
         'comments': observaciones
     }
     calificaciones_count = CalificacionCliente.objects.count()
     self.client.post(url, post_data)
     self.assertEqual(CalificacionCliente.objects.count(), calificaciones_count + 1)
Esempio n. 13
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. 14
0
 def test_api_modificar_calificacion_impide_calificar_mas_de_una_vez_contacto_campana(self):
     contacto_nuevo = ContactoFactory(bd_contacto=self.campana_activa.bd_contacto)
     CalificacionClienteFactory(
         opcion_calificacion=self.opcion_calificacion, contacto=contacto_nuevo)
     token_agente = Token.objects.get(user=self.agente_profile.user).key
     client = APIClient()
     client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_agente)
     observaciones = 'calificacion externa'
     post_data = {
         'id': self.calificacion_cliente.pk,
         'idContact': contacto_nuevo.pk,
         'idAgent': self.agente_profile.pk,
         'idDispositionOption': self.opcion_calificacion.pk,
         'comments': observaciones
     }
     url = reverse('api_disposition-detail', args=(self.calificacion_cliente.pk,))
     response = client.put(url, post_data)
     self.assertEqual(response.status_code, 400)
     self.assertEqual(str(response.data['status']), 'ERROR')
    def test_campos_bloqueados_no_se_modifican(self):
        self.campana_preview.campos_bd_no_editables = json.dumps(['telefono'])
        self.campana_preview.save()
        contacto = ContactoFactory()
        agente_en_contacto = AgenteEnContactoFactory(
            contacto_id=contacto.pk, campana_id=self.campana_preview.id,
            telefono_contacto=contacto.telefono)

        telefono_viejo = contacto.telefono
        telefono_nuevo = contacto.telefono + '111'
        url = reverse('contacto_update', args=[self.campana_preview.pk, contacto.pk])
        post_data = {
            'telefono': telefono_nuevo,
            'datos': str(["xxxxxx", "yyyyy", "CORDOBA", "21000003"]),
            'bd_contacto': contacto.bd_contacto.pk
        }
        self.client.post(url, post_data)
        contacto.refresh_from_db()
        agente_en_contacto.refresh_from_db()
        self.assertEqual(contacto.telefono, telefono_viejo)
        self.assertEqual(agente_en_contacto.telefono_contacto, str(telefono_viejo))
Esempio n. 16
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.llamada_log1 = LlamadaLogFactory.create(
            duracion_llamada=1,
            agente_id=self.agente1.id,
            callid=self.calificacion.callid,
            campana_id=self.campana1.id,
            contacto_id='-1',
            event='COMPLETEAGENT')
        self.llamada_log2 = LlamadaLogFactory.create(
            duracion_llamada=1,
            agente_id=self.agente1.id,
            campana_id=self.campana1.id,
            event='COMPLETEAGENT')
        self.llamada_log3 = LlamadaLogFactory.create(
            duracion_llamada=1,
            agente_id=self.agente1.id,
            campana_id=self.campana1.id,
            event='COMPLETEAGENT')
        self.marca_campana1 = GrabacionMarcaFactory(
            callid=self.llamada_log1.callid)
        self.marca_campana2 = GrabacionMarcaFactory(
            callid=self.llamada_log2.callid)

        self.llamada_log2_1 = LlamadaLogFactory.create(
            duracion_llamada=1,
            agente_id=self.agente2.id,
            campana_id=self.campana2.id,
            event='COMPLETEAGENT')
        self.marca_campana2_1 = GrabacionMarcaFactory(
            callid=self.llamada_log2_1.callid)

        self.llamada_log3_1 = LlamadaLogFactory.create(
            numero_marcado=self.contacto.telefono,
            agente_id=self.agente2.id,
            campana_id=self.campana3.id,
            event='COMPLETEAGENT')

        (_, hace_mucho, ahora) = self._obtener_fechas()
        self.rango_hace_mucho = hace_mucho.date().strftime('%d/%m/%Y') + ' - ' + \
            ahora.date().strftime('%d/%m/%Y')