def form_valid(self, form): fecha = form.cleaned_data.get('fecha') fecha_desde, fecha_hasta = fecha.split('-') fecha_desde = convert_fecha_datetime(fecha_desde) fecha_hasta = convert_fecha_datetime(fecha_hasta) resultado = form.cleaned_data.get('resultado_auditoria') service = ReporteAgenteService() service_formulario = ReporteFormularioVentaService() agente = self.agente # Crear reporte csv para las calficaciones no interesada(no gestion) y gestion # de acuerdo al periodo de fecha seleccionado if not resultado == ReporteForm.TODOS_RESULTADOS: service.crea_reporte_csv(agente, fecha_desde, fecha_hasta) service_formulario.crea_reporte_csv(agente, fecha_desde, fecha_hasta) else: service.crea_reporte_csv(agente, fecha_desde, fecha_hasta, resultado=resultado) service_formulario.crea_reporte_csv(agente, fecha_desde, fecha_hasta, resultado=resultado) fecha_desde = datetime.datetime.combine(fecha_desde, datetime.time.min) fecha_hasta = datetime.datetime.combine(fecha_hasta, datetime.time.max) listado_calificaciones = agente.calificaciones.filter( fecha__range=(fecha_desde, fecha_hasta)) if not resultado == ReporteForm.TODOS_RESULTADOS: listado_calificaciones = listado_calificaciones.filter( auditoriacalificacion__resultado=resultado) return self.render_to_response( self.get_context_data( listado_calificaciones=listado_calificaciones))
def reporte_por_fecha_pausa_modal_agente_view(request): """esta vista es invocada por una ajax para mostrar las pausas por fechas de los agentes en una ventana modal""" if request.method == 'POST': if request.is_ajax(): id_agente = request.POST['id_agente'] fecha_desde = request.POST['fecha_desde'] fecha_hasta = request.POST['fecha_hasta'] fecha_desde = convert_fecha_datetime(fecha_desde) fecha_hasta = convert_fecha_datetime(fecha_hasta) pausa_id = request.POST['pausa_id'] tiempos_agentes = TiemposAgente() pausa = tiempos_agentes._obtener_datos_de_pausa(pausa_id) agente = AgenteProfile.objects.get(pk=int(id_agente)) agentes = tiempos_agentes.calcular_tiempo_pausa_tipo_fecha( agente, fecha_desde, fecha_hasta, pausa_id) ctx = {'agentes': agentes} t = loader.get_template('tbody_pausa_fechas_agentes.html') html = t.render(ctx) data = { 'nombre_agente': agente.user.get_full_name(), 'tbody': html, 'pausa': pausa['nombre'] } return JsonResponse(data, safe=True) return render(request)
def reporte_por_fecha_modal_agente_view(request): """esta vista es invocada por una ajax para mostrar los datos por fechas de los agentes en una ventana modal""" if request.method == 'POST': if request.is_ajax(): id_agente = request.POST['id_agente'] fecha_desde = request.POST['fecha_desde'] fecha_hasta = request.POST['fecha_hasta'] fecha_desde = convert_fecha_datetime(fecha_desde) fecha_hasta = convert_fecha_datetime(fecha_hasta) tiempos_agentes = TiemposAgente() agente = AgenteProfile.objects.get(pk=int(id_agente)) agentes, error = tiempos_agentes.generar_por_fecha_agente( agente, fecha_desde, fecha_hasta) ctx = {'agentes': agentes} t = loader.get_template('tbody_fechas_agentes.html') html = t.render(ctx) data = { 'nombre_agente': agente.user.get_full_name(), 'tbody': html, 'error': error } return JsonResponse(data, safe=True) return render(request)
def clean_fecha(self): fecha = self.cleaned_data.get('fecha') try: fecha_desde, fecha_hasta = fecha.split('-') fecha_desde = convert_fecha_datetime(fecha_desde) fecha_hasta = convert_fecha_datetime(fecha_hasta, final_dia=True) except ValueError: raise forms.ValidationError(_('Formato inválido')) self.desde = fecha_desde self.hasta = fecha_hasta return fecha
def form_valid(self, form): fecha = form.cleaned_data.get('fecha') fecha_desde, fecha_hasta = fecha.split('-') fecha_desde = convert_fecha_datetime(fecha_desde) fecha_hasta = convert_fecha_datetime(fecha_hasta) campana_llamadas_service = EstadisticasCampanaLlamadasService() estadisticas = campana_llamadas_service.general_campana( fecha_desde, fecha_hasta, self.request.user) return self.render_to_response( self.get_context_data(estadisticas=estadisticas))
def form_valid(self, form): fecha = form.cleaned_data.get('fecha') fecha_desde, fecha_hasta = fecha.split('-') fecha_desde = convert_fecha_datetime(fecha_desde) fecha_hasta = convert_fecha_datetime(fecha_hasta) # genera el reporte para el agente de esta campana service = EstadisticasAgenteService() agente = AgenteProfile.objects.get(pk=self.kwargs['pk_agente']) graficos_estadisticas = service.general_campana( agente, self.get_object(), fecha_desde, fecha_hasta) return self.render_to_response( self.get_context_data(graficos_estadisticas=graficos_estadisticas))
def form_valid(self, form): fecha = form.cleaned_data.get('fecha') fecha_desde, fecha_hasta = fecha.split('-') fecha_desde = convert_fecha_datetime(fecha_desde) fecha_hasta = convert_fecha_datetime(fecha_hasta) grupo_id = form.cleaned_data.get('grupo_agente') agentes_pk = form.cleaned_data.get('agente') todos_agentes = form.cleaned_data.get('todos_agentes') agentes = [] if agentes_pk: agentes = AgenteProfile.objects.filter(pk__in=agentes_pk) if grupo_id: grupo = Grupo.objects.get(pk=int(grupo_id)) agentes = grupo.agentes.filter(is_inactive=False) if todos_agentes or (agentes == [] and not grupo_id): supervisor = self.request.user.get_supervisor_profile() if supervisor: if agentes: agentes_inactivos = agentes.filter(is_inactive=True) agentes_eliminados = agentes.filter(borrado=True, user__borrado=True) agentes = AgenteProfile.objects.obtener_agentes_supervisor( supervisor) | agentes_eliminados | agentes_inactivos else: agentes = AgenteProfile.objects.obtener_agentes_supervisor( supervisor) else: # Asumo es Administrador if agentes: agentes_inactivos = agentes.filter(is_inactive=True) agentes_eliminados = agentes.filter(borrado=True, user__borrado=True) agentes = AgenteProfile.objects.\ obtener_activos() | agentes_eliminados | agentes_inactivos else: agentes = AgenteProfile.objects.obtener_activos() agentes = agentes.select_related('user') # generamos los reportes graficos reporte_tiempos = ReporteAgentes(self.request.user) graficos_estadisticas = reporte_tiempos.devuelve_reporte_agentes( agentes, fecha_desde, fecha_hasta) # generar reporte csv reporte_csv = ReporteAgenteCSVService() reporte_csv.crea_reporte_csv(graficos_estadisticas) return self.render_to_response( self.get_context_data(graficos_estadisticas=graficos_estadisticas))
def form_valid(self, form): fecha = form.cleaned_data.get('fecha') if fecha: fecha_desde, fecha_hasta = fecha.split('-') fecha_desde = convert_fecha_datetime(fecha_desde) fecha_hasta = convert_fecha_datetime(fecha_hasta) else: fecha_desde = '' fecha_hasta = '' agente = self.request.user.get_agente_profile() listado_de_eventos = agente.agendacontacto.eventos_filtro_fecha( fecha_desde, fecha_hasta) return self.render_to_response(self.get_context_data( listado_de_eventos=listado_de_eventos, agente=agente))
def form_valid(self, form): fecha = form.cleaned_data.get('fecha') fecha_desde, fecha_hasta = fecha.split('-') fecha_desde = convert_fecha_datetime(fecha_desde) fecha_hasta = convert_fecha_datetime(fecha_hasta) fecha_desde = datetime.datetime.combine(fecha_desde, datetime.time.min) fecha_hasta = datetime.datetime.combine(fecha_hasta, datetime.time.max) # generar el reporte grafico de acuerdo al periodo de fecha seleccionado service = EstadisticasService(self.get_object(), fecha_desde, fecha_hasta) graficos_estadisticas = service.general_campana() # genera el reporte pdf de la campana service_pdf = ReporteCampanaPDFService() service_pdf.crea_reporte_pdf(self.get_object(), graficos_estadisticas) return self.render_to_response( self.get_context_data(graficos_estadisticas=graficos_estadisticas, pk_campana=self.kwargs['pk_campana']))
def form_valid(self, form): fecha = form.cleaned_data.get('fecha') fecha_desde, fecha_hasta = fecha.split('-') fecha_desde = convert_fecha_datetime(fecha_desde) fecha_hasta = convert_fecha_datetime(fecha_hasta) service = ReporteAgenteService() service_formulario = ReporteFormularioVentaService() agente = AgenteProfile.objects.get(pk=self.kwargs['pk_agente']) # Crear reporte csv para las calficaciones no interesada(no gestion) y gestion # de acuerdo al periodo de fecha seleccionado service.crea_reporte_csv(agente, fecha_desde, fecha_hasta) service_formulario.crea_reporte_csv(agente, fecha_desde, fecha_hasta) fecha_desde = datetime.datetime.combine(fecha_desde, datetime.time.min) fecha_hasta = datetime.datetime.combine(fecha_hasta, datetime.time.max) listado_calificaciones = agente.calificaciones.filter(fecha__range=( fecha_desde, fecha_hasta)) return self.render_to_response(self.get_context_data( listado_calificaciones=listado_calificaciones, agente=agente))
def form_valid(self, form): fecha = form.cleaned_data.get('fecha') fecha_desde, fecha_hasta = fecha.split('-') fecha_desde = convert_fecha_datetime(fecha_desde) fecha_hasta = convert_fecha_datetime(fecha_hasta) fecha_desde = datetime.datetime.combine(fecha_desde, datetime.time.min) fecha_hasta = datetime.datetime.combine(fecha_hasta, datetime.time.max) service = ReporteCampanaService(self.get_object()) service.calificaciones_por_fechas(fecha_desde, fecha_hasta) calificaciones_qs = service.calificaciones_qs historico_calificaciones_qs = service.historico_calificaciones_qs historico_calidficaciones = self._procesa_historico_calificaciones( historico_calificaciones_qs) return self.render_to_response( self.get_context_data( calificaciones=calificaciones_qs, historico_calificaciones=historico_calidficaciones.values(), reporte_fecha_desde_elegida=fecha_desde.strftime("%m/%d/%Y"), reporte_fecha_hasta_elegida=fecha_hasta.strftime("%m/%d/%Y"), pk_campana=self.kwargs['pk_campana']))
def form_valid(self, form): fecha = form.cleaned_data.get('fecha') fecha_desde, fecha_hasta = fecha.split('-') fecha_desde = convert_fecha_datetime(fecha_desde) fecha_hasta = convert_fecha_datetime(fecha_hasta) grupo_id = form.cleaned_data.get('grupo_agente') agentes_pk = form.cleaned_data.get('agente') todos_agentes = form.cleaned_data.get('todos_agentes') agentes = [] if agentes_pk: for agente_pk in agentes_pk: agente = AgenteProfile.objects.get(pk=agente_pk) agentes.append(agente) if grupo_id: grupo = Grupo.objects.get(pk=int(grupo_id)) agentes = grupo.agentes.filter(is_inactive=False) if todos_agentes or (agentes == [] and not grupo_id): supervisor = self.request.user.get_supervisor_profile() if supervisor: agentes = AgenteProfile.objects.obtener_agentes_supervisor( supervisor) else: # Asumo es Administrador agentes = AgenteProfile.objects.obtener_activos() # generamos los reportes graficos tiempos_agentes = TiemposAgente() graficos_estadisticas = tiempos_agentes.generar_reportes( agentes, fecha_desde, fecha_hasta, self.request.user) # generar reporte csv reporte_csv = ReporteAgenteCSVService() reporte_csv.crea_reporte_csv(graficos_estadisticas) return self.render_to_response( self.get_context_data(graficos_estadisticas=graficos_estadisticas))
def nuevo_evento_agenda_view(request): """Vista get para insertar un nuevo evento en la agenda REVISAR si se usa esta vista si no es obsoleta. Referenciada en Calendar.js """ # DEPRECATED: Eliminar en OML-1437 agente = request.GET['agente'] es_personal = request.GET['personal'] fecha = request.GET['fechaEvento'] fecha = convert_fecha_datetime(fecha) hora = request.GET['horaEvento'] es_smart = request.GET['smart'] medio_comunicacion = request.GET['channel'] medio = request.GET['dirchan'] descripcion = request.GET['descripcion'] es_smart = convert_string_in_boolean(es_smart) es_personal = convert_string_in_boolean(es_personal) agenda = Agenda(fecha=fecha, hora=hora, es_smart=es_smart, medio_comunicacion=medio_comunicacion, descripcion=descripcion, es_personal=es_personal) # verifico el agente logueado try: agente_logueado = AgenteProfile.objects.get(pk=agente) except AgenteProfile.DoesNotExist: agente_logueado = request.user.get_agente_profile() if es_personal: agenda.agente = agente_logueado if int(medio_comunicacion) is Agenda.MEDIO_LLAMADA: agenda.telefono = medio elif int(medio_comunicacion) is Agenda.MEDIO_SMS: agenda.telefono = medio elif int(medio_comunicacion) is Agenda.MEDIO_EMAIL: agenda.email = medio agenda.save() response = JsonResponse({'status': 'OK'}) return response
def test_convertir_fecha_datetime_falla(self): with self.assertRaisesMessage(ValueError, "day is out of range for month"): convert_fecha_datetime("2017/08/25")
def test_convertir_fecha_datetime(self): fecha = convert_fecha_datetime("25/08/2017") fecha_datetime = timezone.datetime( 2017, 8, 25, tzinfo=timezone.get_current_timezone()) self.assertEqual(fecha, fecha_datetime)