def _agregado_por_comercio(request, anio, mes, quincena, region_id, funcion, prefijo):
if not (hasattr(request.user, "perfil") and \
request.user.perfil.autorizacion >= PERMISO_COORD_ZONAL):
messages.error(request, 'Permisos insuficientes.')
return render(request, 'relevamiento/mensaje.html')
lecturas = _lecturas_del_periodo(anio, mes, quincena, region_id, funcion)
# Pivot de los resultados
lecturas_por_comercio = OrderedDict()
encabezado = ["Producto"]
for lectura in lecturas:
if lectura['comercio'] not in encabezado:
encabezado.append(lectura['comercio'])
lecturas_por_comercio.setdefault(lectura['producto'], {}).update(
{lectura['comercio']: lectura['valor']})
nombre_archivo = [prefijo, anio, mes.zfill(2), quincena.zfill(2)]
if region_id:
region = Region.objects.get(pk=region_id)
nombre_archivo.append("_%s" % slugify(region.nombre))
nombre_archivo.append(".csv")
nombre_archivo = "".join(nombre_archivo)
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename=%s;' % nombre_archivo
response['Cache-Control'] = 'no-cache'
writer = csv.DictWriter(response, fieldnames=encabezado)
writer.writeheader()
for producto, lecturas_dict in list(lecturas_por_comercio.items()):
row = {"Producto": producto}
row.update(lecturas_dict)
writer.writerow(row)
return response
评论列表
文章目录