Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def Expedientes_reportes_csv(request):
- # creacion de un csv a partir de un queryset filtrado dinamicamente
- # desde un formulario.
- if request.method == 'GET':
- fecha1 = request.GET.get('desde')
- fecha2 = request.GET.get('hasta')
- dato = request.GET.get('cuenta')
- tipo = request.GET.get('tipo')
- qs = expediente.objects.all().values('cuenta', 'nsolicitud', 'propietario', 'direccion', 'fecha', 'estatus')
- filtros2 = {}
- if fecha1 or fecha2 or dato:
- if fecha1:
- if fecha2:
- filtros2.update({"fecha__range": (fecha1, fecha2)})
- logging.info('Entrada a if para 2 fechas')
- else:
- filtros2.update({"fecha__date": (fecha1)})
- logging.info('Entrada a if para fecha1')
- elif fecha2:
- filtros2.update({"fecha__date": (fecha2)})
- logging.info('Entrada a if para fecha2')
- if dato:
- filtros2.update({"cuenta": (dato)})
- logging.info('dato en elif')
- logging.debug(dato)
- else:
- qs_hoy = qs.filter(fecha__date=date.today())
- logging.info('sin datos a pedir trae por defecto el dia')
- qs_filtrado = qs.filter(**filtros2).order_by('cuenta', 'nsolicitud')
- logging.info('preparacion del queryset')
- logging.debug(str(filtros2))
- # generamos las cabeceras y el tipo de contenido
- response = HttpResponse(content_type='text/csv')
- response['Content-Disposition'] = 'attachment; filename="expedientes.csv"'
- # comenzamos la escritura del documento
- writer = csv.writer(response)
- #una linea para los datos de generacion
- writer.writerow([fecha1, fecha2])
- # una linea para los Titulos
- writer.writerow(['Cuenta', 'N Solicitud', 'Propietario', 'direccion', 'fecha', 'estatus'])
- # se general el contenido extrayendolo del queriset anterior ya filtrado
- for expedi in qs_filtrado:
- writer.writerow([expedi['cuenta'], expedi['nsolicitud'], expedi['propietario'], expedi['direccion'], expedi['fecha'], expedi['estatus']])
- return response
Advertisement
Add Comment
Please, Sign In to add comment