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 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)
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')
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)
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)
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)
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)
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, ]
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))
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)
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)
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))
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')