Browse Source

Acrescentada exportação CSV no mapa de atuação

stable/1.0
Sesostris Vieira 11 years ago
parent
commit
0ebe615a3a
  1. 8
      media/js/metas/mapa.js
  2. 58
      sigi/apps/metas/views.py
  3. 1
      sigi/templates/metas/mapa.html

8
media/js/metas/mapa.js

@ -8,6 +8,7 @@
$("#closeiwlink").click( closeAllInfowindows ); $("#closeiwlink").click( closeAllInfowindows );
$("#summary_report").click( open_report ); $("#summary_report").click( open_report );
$("#list_report").click( open_report ); $("#list_report").click( open_report );
$("#list_csv").click( open_report );
var latlng = new google.maps.LatLng(-14.2350040, -51.925280); var latlng = new google.maps.LatLng(-14.2350040, -51.925280);
var myOptions = { var myOptions = {
zoom: 5, zoom: 5,
@ -181,7 +182,12 @@
function open_report(event) { function open_report(event) {
var data = $("#filter_form").serialize(); var data = $("#filter_form").serialize();
var href = this.href + "?" + data; var href = this.href;
if (href.indexOf("?") < 0) {
href = href + "?" + data
} else {
href = href + "&" + data
}
var win = window.open(href, '', ''); var win = window.open(href, '', '');
win.focus(); win.focus();
return false; return false;

58
sigi/apps/metas/views.py

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import csv
from django.http import HttpResponse from django.http import HttpResponse
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
from django.utils import simplejson from django.utils import simplejson
@ -7,16 +8,17 @@ from django.shortcuts import render_to_response
from django.template import RequestContext from django.template import RequestContext
from django.db.models import Q from django.db.models import Q
from django.views.decorators.cache import cache_page from django.views.decorators.cache import cache_page
from django.db.models.aggregates import Sum
from django.contrib.auth.decorators import user_passes_test, login_required
from sigi.settings import MEDIA_ROOT
from sigi.shortcuts import render_to_pdf from sigi.shortcuts import render_to_pdf
from sigi.apps.servicos.models import TipoServico, Servico from sigi.apps.servicos.models import TipoServico, Servico
from sigi.apps.convenios.models import Projeto, Convenio from sigi.apps.convenios.models import Projeto, Convenio
from sigi.apps.contatos.models import UnidadeFederativa from sigi.apps.contatos.models import UnidadeFederativa
from sigi.apps.casas.models import CasaLegislativa from sigi.apps.casas.models import CasaLegislativa
from sigi.apps.utils import to_ascii from sigi.apps.utils import to_ascii
from apps.financeiro.models import Desembolso from sigi.apps.financeiro.models import Desembolso
from django.db.models.aggregates import Sum from sigi.apps.metas.templatetags.mapa_tags import descricao_servicos
from django.contrib.auth.decorators import user_passes_test, login_required
from sigi.settings import MEDIA_ROOT
JSON_FILE_NAME = MEDIA_ROOT + 'apps/metas/map_data.json' JSON_FILE_NAME = MEDIA_ROOT + 'apps/metas/map_data.json'
@ -188,13 +190,47 @@ def map_sum(request):
} }
return render_to_pdf('metas/map_sum.html', extra_context) return render_to_pdf('metas/map_sum.html', extra_context)
@cache_page(86400) # Cache de um dia (24 horas = 86400 segundos)
def map_list(request): def map_list(request):
# Filtrar Casas de acordo com os parâmetros # Filtrar Casas de acordo com os parâmetros
param = get_params(request) param = get_params(request)
formato = request.GET.get('fmt', 'pdf')
casas = filtrar_casas(**param) casas = filtrar_casas(**param)
casas = casas.order_by('municipio__uf__regiao', 'municipio__uf__nome', 'nome').distinct() casas = casas.order_by('municipio__uf__regiao', 'municipio__uf__nome', 'nome').distinct()
if formato == 'csv':
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="maplist.csv"'
writer = csv.writer(response)
srv = {ts.pk: ts.nome for ts in TipoServico.objects.all()}
cnv = {pr.id: pr.sigla for pr in Projeto.objects.all()}
writer.writerow([u'codigo_ibge', u'nome_casa', u'municipio', u'uf', u'regiao',] + [x for x in srv.values()] +
reduce(lambda x,y: x+y, [['conveniada ao %s' % x, 'equipada por %s' % x] for x in cnv.values()]))
for casa in casas:
row = [casa.municipio.codigo_ibge, casa.nome, casa.municipio.nome, casa.municipio.uf.sigla,
casa.municipio.uf.get_regiao_display(),]
for id in srv.keys():
try:
sv = casa.servico_set.get(tipo_servico__id=id)
row += [sv.data_ativacao,]
except:
row += [None,]
for id in cnv.keys():
try:
cv = casa.convenio_set.get(projeto__id=id)
row += [cv.data_retorno_assinatura, cv.data_termo_aceite if cv.equipada else None,]
except:
row += [None, None,]
writer.writerow(row)
return response
return render_to_pdf('metas/map_list.html', {'casas': casas}) return render_to_pdf('metas/map_list.html', {'casas': casas})
#---------------------------------------------------------------------------------------------------- #----------------------------------------------------------------------------------------------------
# Funções auxiliares - não são views # Funções auxiliares - não são views
#---------------------------------------------------------------------------------------------------- #----------------------------------------------------------------------------------------------------
@ -259,24 +295,28 @@ def gera_map_data_file(cronjob=False):
} }
for sv in c.servico_set.all(): for sv in c.servico_set.all():
casa['info'].append(u"%s ativado em %s <a href='%s' target='_blank'><img src='/sigi/media/images/link.gif' alt='link'></a>" % (sv.tipo_servico.nome, sv.data_ativacao.strftime('%d/%m/%Y'), sv.url)) casa['info'].append(u"%s ativado em %s <a href='%s' target='_blank'><img src='/sigi/media/images/link.gif' alt='link'></a>" % (
sv.tipo_servico.nome, sv.data_ativacao.strftime('%d/%m/%Y') if sv.data_ativacao else
u'<sem data de ativação>', sv.url))
casa['seit'].append(sv.tipo_servico.sigla) casa['seit'].append(sv.tipo_servico.sigla)
for cv in c.convenio_set.all(): for cv in c.convenio_set.all():
if (cv.data_retorno_assinatura is None) and (cv.equipada and cv.data_termo_aceite.strftime('%d/%m/%Y') is not None): if (cv.data_retorno_assinatura is None) and (cv.equipada and cv.data_termo_aceite is not None):
casa['info'].append(u"Equipada em %s pelo %s" % (cv.data_termo_aceite.strftime('%d/%m/%Y'), cv.projeto.sigla)) casa['info'].append(u"Equipada em %s pelo %s" % (cv.data_termo_aceite.strftime('%d/%m/%Y'), cv.projeto.sigla))
casa['equipadas'].append(cv.projeto.sigla) casa['equipadas'].append(cv.projeto.sigla)
if (cv.data_retorno_assinatura is not None) and not (cv.equipada and cv.data_termo_aceite.strftime('%d/%m/%Y') is not None): if (cv.data_retorno_assinatura is not None) and not (cv.equipada and cv.data_termo_aceite is not None):
casa['info'].append(u"Conveniada ao %s em %s" % (cv.projeto.sigla, cv.data_retorno_assinatura.strftime('%d/%m/%Y'))) casa['info'].append(u"Conveniada ao %s em %s" % (cv.projeto.sigla, cv.data_retorno_assinatura.strftime('%d/%m/%Y')))
casa['convenios'].append(cv.projeto.sigla) casa['convenios'].append(cv.projeto.sigla)
if (cv.data_retorno_assinatura is not None) and (cv.equipada and cv.data_termo_aceite.strftime('%d/%m/%Y') is not None): if (cv.data_retorno_assinatura is not None) and (cv.equipada and cv.data_termo_aceite is not None):
casa['info'].append(u"Conveniada ao %s em %s e equipada em %s" % (cv.projeto.sigla, cv.data_retorno_assinatura.strftime('%d/%m/%Y'), cv.data_termo_aceite.strftime('%d/%m/%Y'))) casa['info'].append(u"Conveniada ao %s em %s e equipada em %s" % (cv.projeto.sigla, cv.data_retorno_assinatura.strftime('%d/%m/%Y'), cv.data_termo_aceite.strftime('%d/%m/%Y')))
casa['equipadas'].append(cv.projeto.sigla) casa['equipadas'].append(cv.projeto.sigla)
casa['convenios'].append(cv.projeto.sigla) casa['convenios'].append(cv.projeto.sigla)
for dg in c.diagnostico_set.all(): for dg in c.diagnostico_set.all():
casa['diagnosticos'].append('P' if dg.publicado else 'A') casa['diagnosticos'].append('P' if dg.publicado else 'A')
casa['info'].append(u'Diagnosticada no período de %s a %s' % (dg.data_visita_inicio.strftime('%d/%m/%Y'), dg.data_visita_fim.strftime('%d/%m/%Y'))) casa['info'].append(u'Diagnosticada no período de %s a %s' % (dg.data_visita_inicio.strftime('%d/%m/%Y') if
dg.data_visita_inicio is not None else u"<sem data de início>",
dg.data_visita_fim.strftime('%d/%m/%Y') if dg.data_visita_fim else u"<sem data de término>"))
casa['info'] = "<br/>".join(casa['info']) casa['info'] = "<br/>".join(casa['info'])

1
sigi/templates/metas/mapa.html

@ -31,6 +31,7 @@
<ul class="object-tools"> <ul class="object-tools">
<li> <a href="/sigi/dashboard/mapsum/" id="summary_report" onclick="return false;">Relatório resumo</a> </li> <li> <a href="/sigi/dashboard/mapsum/" id="summary_report" onclick="return false;">Relatório resumo</a> </li>
<li> <a href="/sigi/dashboard/maplist/" id="list_report" onclick="return false;">Listagem das Casas</a> </li> <li> <a href="/sigi/dashboard/maplist/" id="list_report" onclick="return false;">Listagem das Casas</a> </li>
<li> <a href="/sigi/dashboard/maplist/?fmt=csv" id="list_csv" onclick="return false;">Exportar Casas</a> </li>
<li> <a href="#" id="closeiwlink">Fechar todas as janelas de informação</a> </li> <li> <a href="#" id="closeiwlink">Fechar todas as janelas de informação</a> </li>
</ul> </ul>
</div> </div>

Loading…
Cancel
Save