Example #1
0
    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)
Example #2
0
    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']])
Example #3
0
    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
Example #4
0
 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