def test_devuelve_correctamente_no_contactacion(self): """ este test testea todos los resultados las cantidad de los no contactdos chequeando que devuelva correctamente """ contactos = self.campana.bd_contacto.contactos.all() generador = GeneradorDeLlamadaLogs() cant_llamados = 100 for _ in range(0, cant_llamados): contacto = random.choice(contactos) estado = random.choice(self.estados) generador.generar_log(self.campana, False, estado, contacto.telefono, self.agente, contacto) cantidades = {} for estado in self.estados: cantidades[EstadisticasContactacion.MAP_ESTADO_ID[estado]] = 0 no_llamados = cant_llamados for contacto in contactos: logs = LlamadaLog.objects.filter( contacto_id=contacto.id).order_by('-id') if logs: log = logs[0] self.assertIn(log.event, self.estados) cantidades[EstadisticasContactacion.MAP_ESTADO_ID[ log.event]] += 1 no_llamados -= 1 estadisticas = EstadisticasContactacion() no_contactados = estadisticas.obtener_cantidad_no_contactados( self.campana) for key, value in no_contactados.items(): self.assertEqual(cantidades[key], value.cantidad)
def test_devuelve_correctamente_calificados(self): """ este test testea todos los resultados las cantidad de los contactdos chequeando que devuelva correctamente """ contactos = self.campana.bd_contacto.contactos.all() opciones_calificacion = self.campana.opciones_calificacion.all() for contacto in contactos: opcion_calificacion = random.choice(opciones_calificacion) self.crear_calificacion_cliente(self.agente, contacto, opcion_calificacion) estadisticas = EstadisticasContactacion() calificados = estadisticas.obtener_cantidad_calificacion(self.campana) calificaciones_query = self.campana.obtener_calificaciones().values( 'opcion_calificacion__nombre', 'opcion_calificacion__id').annotate( Count('opcion_calificacion')).filter( opcion_calificacion__count__gt=0).order_by() contactados_dict = {} for contactado in calificados: contactados_dict.update({contactado.id: contactado.cantidad}) for contactacion in calificaciones_query: self.assertEquals( contactacion['opcion_calificacion__count'], contactados_dict[contactacion['opcion_calificacion__id']])
def get_form_kwargs(self): kwargs = super(ReciclarCampanaDialerFormView, self).get_form_kwargs() estadisticas = EstadisticasContactacion() campana = Campana.objects.get(pk=self.kwargs['pk_campana']) contactados = estadisticas.obtener_cantidad_calificacion(campana) contactados_choice = [(contactacion.id, contactacion.label_checkbox) for contactacion in contactados] no_contactados = estadisticas.obtener_cantidad_no_contactados(campana) no_contactados_choice = [(value.id, value.label_checkbox) for key, value in no_contactados.items()] kwargs['reciclado_choice'] = contactados_choice kwargs['no_contactados_choice'] = no_contactados_choice return kwargs
def get_context_data(self, **kwargs): context = super(ReciclarCampanaMixin, self).get_context_data(**kwargs) estadisticas = EstadisticasContactacion() campana = Campana.objects.get(pk=self.kwargs['pk_campana']) contactados = estadisticas.obtener_cantidad_calificacion(campana) contactados_choice = [(contactacion.id, contactacion.nombre, contactacion.cantidad) for contactacion in contactados] no_contactados = estadisticas.obtener_cantidad_no_contactados(campana) no_contactados_choice = [(value.id, value.nombre, value.cantidad) for key, value in no_contactados.items()] context['contactados'] = contactados_choice context['no_contactados'] = no_contactados_choice return context