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): 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)
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)
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', }
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))
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)
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))
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'])
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)
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)
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)
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)
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')
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)
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)
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)
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)
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)
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_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')
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)
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)
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)
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')
def test_servicio_agentes_activos_entradas_menos_lineas_son_detectadas_y_excluidas( 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() 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}/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)
def _hacer_miembro(self, agente, campana): QueueMemberFactory.create(member=agente, queue_name=campana.queue_campana, id_campana=campana.get_queue_id_name())
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=campana.get_queue_id_name())
def _hacer_miembro(self, agente, campana): QueueMemberFactory.create(member=agente, queue_name=campana.queue_campana, id_campana='{0}_{1}'.format( campana.pk, campana.nombre))
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_supervisor2 = self.crear_user_supervisor(username='******') self.crear_supervisor_profile(usr_supervisor2) 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() bd_contacto = self.crear_base_datos_contacto( cant_contactos=3, columna_id_externo='id_ext') self.campana = self.crear_campana_manual(cant_contactos=3, user=usr_supervisor, bd_contactos=bd_contacto) 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() self.contacto_2 = bd_contacto.contactos.first() self.metadata_ok = { u'status': u'OK', u'main_phone': u'TELEFONO', u'external_id': u'id_ext', u'fields': [u'TELEFONO', u'NOMBRE', u'FECHA', u'HORA', u'id_ext'] } self.post_data_contacto = { 'idCampaign': str(self.campana.id), 'TELEFONO': '3511111111', 'NOMBRE': 'nombre', 'FECHA': '2000/01/01', 'HORA': '16:22', } self.post_data_contacto_externo = { 'idExternalSystem': str(self.sistema_externo.id), 'idCampaign': self.campana.id_externo, 'TELEFONO': '3511111111', 'NOMBRE': 'nombre', 'FECHA': '2000/01/01', 'HORA': '16:22', 'id_ext': 'c2', } self.contacto_ok = { u'status': u'OK', u'message': _(u'Contacto agregado'), u'contacto': { u'HORA': u'16:22', u'NOMBRE': u'nombre', u'FECHA': u'2000/01/01', u'TELEFONO': u'3511111111', u'id_ext': None }, u'id': 0 }