def setUp(self): super(ReglaIncidenciaPorCalificacionTests, self).setUp() self.admin = self.crear_administrador() self.client.login(username=self.admin.username, password=PASSWORD) self.formulario = FormularioFactory() self.campo_formulario = FieldFormularioFactory( formulario=self.formulario) self.campana = CampanaFactory.create(type=Campana.TYPE_DIALER) self.nombre_opcion_1 = NombreCalificacionFactory.create() self.opcion_calificacion_1 = OpcionCalificacionFactory.create( campana=self.campana, nombre=self.nombre_opcion_1.nombre, tipo=OpcionCalificacion.GESTION, formulario=self.formulario) self.campana.opciones_calificacion.add(self.opcion_calificacion_1) self.nombre_opcion_2 = NombreCalificacionFactory.create() self.opcion_calificacion_2 = OpcionCalificacionFactory.create( campana=self.campana, nombre=self.nombre_opcion_2.nombre, tipo=OpcionCalificacion.NO_ACCION) self.campana.opciones_calificacion.add(self.opcion_calificacion_2) self.contacto = ContactoFactory.create() self.campana.bd_contacto.contactos.add(self.contacto) self.campana_extra = CampanaFactory.create(type=Campana.TYPE_DIALER) self.nombre_opcion_extra = NombreCalificacionFactory.create() self.opcion_calificacion_extra = OpcionCalificacionFactory.create( campana=self.campana_extra, nombre=self.nombre_opcion_extra.nombre, tipo=OpcionCalificacion.NO_ACCION) self.campana_extra.opciones_calificacion.add( self.opcion_calificacion_extra)
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(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_calificacion_cliente_creacion_redirecciona_a_otro_formulario_gestion( self, post): nuevo_formulario = FormularioFactory() campo_formulario = FieldFormularioFactory(formulario=nuevo_formulario, nombre_campo='otro_campo') nombre_opcion = NombreCalificacionFactory.create(nombre='otra opcion') opcion_calificacion = OpcionCalificacionFactory.create( campana=self.campana, nombre=nombre_opcion, tipo=OpcionCalificacion.GESTION, formulario=nuevo_formulario) url = reverse('calificacion_formulario_update_or_create', kwargs={ 'pk_campana': self.campana.pk, 'pk_contacto': self.contacto.pk }) post_data = self._obtener_post_data_calificacion_cliente() post_data['opcion_calificacion'] = opcion_calificacion.pk response = self.client.post(url, post_data, follow=True) self.assertTemplateUsed( response, 'formulario/respuesta_formulario_gestion_agente.html') self.assertTrue(campo_formulario.nombre_campo in response.context_data['form'].fields) self.assertFalse(self.campo_formulario.nombre_campo in response.context_data['form'].fields)
def setUp(self, *args, **kwargs): super(OMLBaseTest, self).setUp(*args, **kwargs) if hasattr(settings, 'DESHABILITAR_MIGRACIONES_EN_TESTS') and \ settings.DESHABILITAR_MIGRACIONES_EN_TESTS: NombreCalificacionFactory(nombre=settings.CALIFICACION_REAGENDA) Group.objects.create(name=User.ADMINISTRADOR) Group.objects.create(name=User.GERENTE) Group.objects.create(name=User.SUPERVISOR) Group.objects.create(name=User.REFERENTE) Group.objects.create(name=User.AGENTE) call_command('actualizar_permisos')
def test_no_permite_auditar_en_campanas_no_asignadas(self): campana_no_asignada = CampanaFactory.create( estado=Campana.ESTADO_ACTIVA) nombre_opcion_no_asignada = NombreCalificacionFactory.create() opcion_calificacion_no_asignada = OpcionCalificacionFactory.create( campana=campana_no_asignada, nombre=nombre_opcion_no_asignada.nombre) contacto_no_asignada = ContactoFactory.create() campana_no_asignada.bd_contacto.contactos.add(contacto_no_asignada) calificacion_no_asignada = CalificacionClienteFactory( opcion_calificacion=opcion_calificacion_no_asignada, agente=self.agente, contacto=contacto_no_asignada) url = reverse('auditar_calificacion_cliente', args=(calificacion_no_asignada.id, )) response = self.client.get(url, follow=True) self.assertEqual(response.status_code, 200) self.assertRedirects(response, reverse('buscar_auditorias_gestion', args=(1, ))) self.assertContains( response, _("No tiene permiso para auditar calificaciones de esta campaña."))
def _crear_datos_entorno(self): self.admin = User.objects.filter(is_staff=True).first() # crear grupo grupo = GrupoFactory() # crear agente agente = AgenteProfileFactory(grupo=grupo, reported_by=self.admin) agente.user.username = self.agent_username agente.user.set_password(self.agent_password) agente.sip_extension = 1000 + agente.id agente.user.is_agente = True agente.user.save() agente.save() agente.user.groups.add(Group.objects.get(name='Agente')) asterisk_sip_service = ActivacionAgenteService() asterisk_sip_service.activar() # crear audio ArchivoDeAudioFactory() # crear pausa PausaFactory() # crear formulario (2 campos) form = FormularioFactory() FieldFormularioFactory.create_batch(2, formulario=form) # crear califs.(1 gestion y 1 normal) self.success = NombreCalificacionFactory(nombre='Success') self.angry = NombreCalificacionFactory(nombre='Hangs up angry') # crear BD (3 contactos) self.bd_contacto = BaseDatosContactoFactory() ContactoFactory.create_batch(3, bd_contacto=self.bd_contacto) campana_manual = self._crear_campana_manual() campana_entrante = self._crear_campana_entrante() activacion_queue_service = ActivacionQueueService() activacion_queue_service.activar() # crea un troncal y con este una ruta entrante hacia el pbx-emulator text_config = ("type=friend\n" "host=pbx-emulator\n" "defaultuser=01177660010\n" "secret=OMLtraining72\n" "qualify=yes\n" "insecure=invite\n" "context=from-pstn\n" "disallow=all\n" "allow=alaw\n") register_string = "01177660010:OMLtraining72@pbx-emulator" troncal_pbx_emulator = TroncalSIPFactory( text_config=text_config, register_string=register_string, canales_maximos=1000, caller_id='') sincronizador_troncal = SincronizadorDeConfiguracionTroncalSipEnAsterisk( ) sincronizador_troncal.regenerar_troncales(troncal_pbx_emulator) ruta_saliente = RutaSalienteFactory(ring_time=25, dial_options="Tt") PatronDeDiscadoFactory(ruta_saliente=ruta_saliente, match_pattern="X.") OrdenTroncalFactory(ruta_saliente=ruta_saliente, orden=0, troncal=troncal_pbx_emulator) sincronizador_ruta_saliente = SincronizadorDeConfiguracionDeRutaSalienteEnAsterisk( ) sincronizador_ruta_saliente.regenerar_asterisk(ruta_saliente) # crear ruta entrante self._crear_ruta_entrante(campana_entrante) self._asignar_agente_a_campana(agente, campana_manual) self._asignar_agente_a_campana(agente, campana_entrante)
def _crear_datos_entorno(self): admin = User.objects.filter(is_staff=True).first() # crear grupo grupo = GrupoFactory() # crear modulo modulo = ModuloFactory() # crear agente agente = AgenteProfileFactory(grupo=grupo, reported_by=admin) agente.modulos.add(modulo) agente.user.username = self.agent_username agente.user.set_password(self.agent_password) agente.sip_extension = 1000 + agente.id agente.user.is_agente = True agente.user.save() agente.save() asterisk_sip_service = ActivacionAgenteService() asterisk_sip_service.activar() # crear audio ArchivoDeAudioFactory() # crear pausa PausaFactory() # crear formulario (2 campos) form = FormularioFactory() FieldFormularioFactory.create_batch(2, formulario=form) # crear califs.(1 gestion y 1 normal) success = NombreCalificacionFactory(nombre='Success') angry = NombreCalificacionFactory(nombre='Hangs up angry') # crear BD (3 contactos) bd_contacto = BaseDatosContactoFactory() ContactoFactory.create_batch(3, bd_contacto=bd_contacto) # crear campaña manual campana_manual = CampanaFactory( nombre='test_manual_campaign', bd_contacto=bd_contacto, type=Campana.TYPE_MANUAL, reported_by=admin, es_manual=True, estado=Campana.ESTADO_ACTIVA ) # crear Queue para la campaña Queue.objects.create( campana=campana_manual, name=campana_manual.nombre, maxlen=5, wrapuptime=5, servicelevel=30, strategy='rrmemory', eventmemberstatus=True, eventwhencalled=True, ringinuse=True, setinterfacevar=True, weight=0, wait=120 ) # opciones de calificacion OpcionCalificacionFactory( nombre=success.nombre, campana=campana_manual, tipo=OpcionCalificacion.GESTION) OpcionCalificacionFactory( nombre=angry.nombre, campana=campana_manual, tipo=OpcionCalificacion.NO_ACCION) activacion_queue_service = ActivacionQueueService() activacion_queue_service.activar() # crea un troncal y con este una ruta entrante hacia el pbx-emulator text_config = ("type=friend\n" "host=pbx-emulator\n" "defaultuser=01177660010\n" "secret=OMLtraining72\n" "qualify=yes\n" "insecure=invite\n" "context=from-pstn\n" "disallow=all\n" "allow=alaw\n") register_string = "01177660010:OMLtraining72@pbx-emulator" troncal_pbx_emulator = TroncalSIPFactory( text_config=text_config, register_string=register_string, canales_maximos=1000, caller_id='') sincronizador_troncal = SincronizadorDeConfiguracionTroncalSipEnAsterisk() sincronizador_troncal.regenerar_troncales(troncal_pbx_emulator) ruta_saliente = RutaSalienteFactory(ring_time=25, dial_options="Tt") PatronDeDiscadoFactory(ruta_saliente=ruta_saliente, match_pattern="X.") OrdenTroncalFactory(ruta_saliente=ruta_saliente, orden=0, troncal=troncal_pbx_emulator) sincronizador_ruta_saliente = SincronizadorDeConfiguracionDeRutaSalienteEnAsterisk() sincronizador_ruta_saliente.regenerar_rutas_salientes(ruta_saliente)
def setUp(self, *args, **kwargs): super(OMLBaseTest, self).setUp(*args, **kwargs) if hasattr(settings, 'DESHABILITAR_MIGRACIONES_EN_TESTS') and \ settings.DESHABILITAR_MIGRACIONES_EN_TESTS: NombreCalificacionFactory(nombre=settings.CALIFICACION_REAGENDA)
def _crear_datos_entorno(self): self.admin = User.objects.filter(is_staff=True).first() # crear grupo grupo = GrupoFactory() # crear agente agente = AgenteProfileFactory(grupo=grupo, reported_by=self.admin) agente.user.username = self.agent_username agente.user.set_password(self.agent_password) agente.sip_extension = 1000 + agente.user.id agente.user.is_agente = True agente.user.save() agente.save() agente.user.groups.add(Group.objects.get(name='Agente')) asterisk_sip_service = ActivacionAgenteService() asterisk_sip_service.activar() # crear audio ArchivoDeAudioFactory() # crear pausa PausaFactory() # crear formulario (2 campos) form = FormularioFactory() FieldFormularioFactory.create_batch(2, formulario=form) # crear califs.(1 gestion y 1 normal) self.success = NombreCalificacionFactory(nombre='Success') self.angry = NombreCalificacionFactory(nombre='Hangs up angry') # crear BD (3 contactos) self.bd_contacto = BaseDatosContactoFactory() ContactoFactory.create_batch(3, bd_contacto=self.bd_contacto) campana_manual = self._crear_campana_manual() campana_entrante = self._crear_campana_entrante() activacion_queue_service = ActivacionQueueService() activacion_queue_service.activar() # crea un troncal y con este una ruta entrante hacia el pbx-emulator text_config = ("type=wizard\n" "transport=trunk-transport\n" "accepts_registrations=no\n" "accepts_auth=no\n" "sends_registrations=yes\n" "sends_auth=yes\n" "endpoint/rtp_symmetric=no\n" "endpoint/force_rport=no\n" "endpoint/rewrite_contact=yes\n" "endpoint/timers=yes\n" "aor/qualify_frequency=60\n" "endpoint/allow=alaw,ulaw\n" "endpoint/dtmf_mode=rfc4733\n" "endpoint/context=from-pstn\n" "remote_hosts=pbxemulator:5060\n" "outbound_auth/username=01177660010\n" "outbound_auth/password=OMLtraining72\n") troncal_pbx_emulator = TroncalSIPFactory(text_config=text_config, canales_maximos=1000, tecnologia=1, caller_id='') sincronizador_troncal = SincronizadorDeConfiguracionTroncalSipEnAsterisk( ) sincronizador_troncal.regenerar_troncales(troncal_pbx_emulator) ruta_saliente = RutaSalienteFactory(ring_time=25, dial_options="Tt") PatronDeDiscadoFactory(ruta_saliente=ruta_saliente, match_pattern="X.") OrdenTroncalFactory(ruta_saliente=ruta_saliente, orden=0, troncal=troncal_pbx_emulator) sincronizador_ruta_saliente = SincronizadorDeConfiguracionDeRutaSalienteEnAsterisk( ) sincronizador_ruta_saliente.regenerar_asterisk(ruta_saliente) # crear ruta entrante self._crear_ruta_entrante(campana_entrante) self._asignar_agente_a_campana(agente, campana_manual) self._asignar_agente_a_campana(agente, campana_entrante)