From b2b3f4e402af500c21dcc31fdf29ed946de28594 Mon Sep 17 00:00:00 2001 From: "Starlone (Estagiario)" Date: Tue, 14 Jun 2011 19:56:43 +0000 Subject: [PATCH] Atualizando relatorio por regiao. Dividido por projetos. --- sigi/apps/convenios/admin.py | 2 +- .../templates/convenios/tabela_regiao.html | 9 +- sigi/apps/convenios/views.py | 168 ++++++++---------- 3 files changed, 82 insertions(+), 97 deletions(-) diff --git a/sigi/apps/convenios/admin.py b/sigi/apps/convenios/admin.py index 95c3f14..547875e 100644 --- a/sigi/apps/convenios/admin.py +++ b/sigi/apps/convenios/admin.py @@ -50,7 +50,7 @@ class ConvenioAdmin(admin.ModelAdmin): actions = ['adicionar_convenios'] inlines = (TramitacaoInline, AnexosInline, EquipamentoPrevistoInline) list_display = ('num_convenio', 'casa_legislativa', - 'data_adesao','data_retorno_assinatura','data_termo_aceite', + 'data_adesao','data_retorno_assinatura','data_pub_diario','data_termo_aceite', 'projeto', ) list_display_links = ('num_convenio','casa_legislativa',) diff --git a/sigi/apps/convenios/templates/convenios/tabela_regiao.html b/sigi/apps/convenios/templates/convenios/tabela_regiao.html index 1f11bf4..b112863 100644 --- a/sigi/apps/convenios/templates/convenios/tabela_regiao.html +++ b/sigi/apps/convenios/templates/convenios/tabela_regiao.html @@ -99,11 +99,12 @@ Logo Interlegis -

{{tabela.regiao}}

+

{{regiao}}

-
+
+ {% for tabela in tabelas %} - + {%for item in tabela.cabecalho%} @@ -128,6 +129,8 @@
{{tabela.projeto}} - {{tabela.regiao}}{{tabela.projeto}} - {{regiao}}
+
+ {% endfor %}
diff --git a/sigi/apps/convenios/views.py b/sigi/apps/convenios/views.py index eb7234d..166a38b 100644 --- a/sigi/apps/convenios/views.py +++ b/sigi/apps/convenios/views.py @@ -2,7 +2,7 @@ from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import render_to_response, get_list_or_404 from geraldo.generators import PDFGenerator -from sigi.apps.convenios.models import Convenio +from sigi.apps.convenios.models import Convenio, Projeto from sigi.apps.convenios.reports import ConvenioReport \ ,ConvenioPorCMReport \ ,ConvenioPorALReport \ @@ -173,122 +173,104 @@ def report(request, id=None): report.generate_by(PDFGenerator, filename=response) else: return HttpResponseRedirect('../') - return response - -def report_regiao(request,regiao='NE'): - - if request.POST: - if request.POST.has_key('regiao'): - regiao = request.POST['regiao'] + return response - REGIAO_CHOICES = { - 'SL': 'Sul', - 'SD': 'Sudeste', - 'CO': 'Centro-Oeste', - 'NE': 'Nordeste', - 'NO': 'Norte', - } - - camaras = CasaLegislativa.objects.filter(tipo__sigla='CM') - convenios = Convenio.objects.filter(casa_legislativa__tipo__sigla='CM',projeto__sigla='PI') - - camaras_sem_processo = camaras.exclude(convenio__projeto__sigla='PI') - - convenios_assinados = convenios.exclude(data_retorno_assinatura=None) - convenios_em_andamento = convenios.filter(data_retorno_assinatura=None) +def casas_estado_to_tabela(casas,convenios,regiao): - convenios_sem_adesao = convenios.filter(data_adesao=None) - convenios_com_adesao = convenios.exclude(data_adesao=None) - convenios_com_aceite = convenios.exclude(data_termo_aceite=None) - - # Contando casas por estado estados = get_list_or_404(UnidadeFederativa,regiao=regiao) - + class LinhaEstado(): pass - + lista = [] - + for estado in estados: - linha = LinhaEstado() - conv_sem_adesao_est = convenios_sem_adesao.filter(casa_legislativa__municipio__uf=estado) - conv_com_adesao_est = convenios_com_adesao.filter(casa_legislativa__municipio__uf=estado) - conv_assinados_est = convenios_assinados.filter(casa_legislativa__municipio__uf=estado) - conv_em_andamento_est = convenios_em_andamento.filter(casa_legislativa__municipio__uf=estado) - conv_equipadas_est = convenios_com_aceite.filter(casa_legislativa__municipio__uf=estado) - - camaras_est = camaras.filter(municipio__uf=estado,tipo__sigla='CM').count() - camaras_sem_processo_est = camaras_sem_processo.filter(municipio__uf=estado).count() - camaras_nao_aderidas_est = camaras.filter(convenio__in=conv_sem_adesao_est).count() - camaras_aderidas_est = camaras.filter(convenio__in=conv_com_adesao_est).count() - camaras_convenios_assinados_est = camaras.filter(convenio__in=conv_assinados_est).count() - camaras_convenios_em_andamento_est = camaras.filter(convenio__in=conv_em_andamento_est).count() - camaras_equipadas_est = camaras.filter(convenio__in=conv_equipadas_est).count() - + linha = LinhaEstado() + + convenios_est = convenios.filter(casa_legislativa__municipio__uf=estado) + convenios_est_publicados = convenios_est.exclude(data_pub_diario=None) + + casas_est = casas.filter(municipio__uf=estado) + casas_est_nao_aderidas = casas_est.exclude(convenio__in=convenios_est).distinct() + casas_est_aderidas = casas_est.filter(convenio__in=convenios_est).distinct() + casas_est_conveniadas = casas_est.filter(convenio__in=convenios_est_publicados).distinct() + linha.lista = ( - camaras_est, - camaras_sem_processo_est, - camaras_nao_aderidas_est, - camaras_aderidas_est, - camaras_convenios_assinados_est, - camaras_convenios_em_andamento_est, - camaras_equipadas_est, + casas_est.count(), + casas_est_nao_aderidas.count(), + casas_est_aderidas.count(), + casas_est_conveniadas.count(), ) - - linha.estado = estado.sigla - + + linha.estado = estado + lista.append(linha) - # Total - total_cm = camaras.filter(municipio__uf__regiao=regiao,tipo__sigla='CM').count() - total_sem_processo = camaras_sem_processo.filter(municipio__uf__regiao=regiao).count() - total_sem_adesao = camaras.filter(convenio__in=convenios_sem_adesao,municipio__uf__regiao=regiao).count() - total_com_adesao = camaras.filter(convenio__in=convenios_com_adesao,municipio__uf__regiao=regiao).count() - total_conv_assin = camaras.filter(convenio__in=convenios_assinados,municipio__uf__regiao=regiao).count() - total_conv_andam = camaras.filter(convenio__in=convenios_em_andamento,municipio__uf__regiao=regiao).count() - total_equipadas = camaras.filter(convenio__in=convenios_com_aceite,municipio__uf__regiao=regiao).count() - - sumario = [ - total_cm, - total_sem_processo, - total_sem_adesao, - total_com_adesao, - total_conv_assin, - total_conv_andam, - total_equipadas, - ] - - - + casas_regiao = casas.filter(municipio__uf__regiao=regiao) + convenios_regiao = convenios.filter(casa_legislativa__municipio__uf__regiao=regiao) + convenios_regiao_publicados = convenios_regiao.exclude(data_pub_diario=None) + sumario = ( + casas_regiao.count(), + casas_regiao.exclude(convenio__in=convenios_regiao).distinct().count(), + casas_regiao.filter(convenio__in=convenios_regiao).distinct().count(), + casas_regiao.filter(convenio__in=convenios_regiao_publicados).distinct().count(), + ) + cabecalho_topo = ( - u'UF', + u'UF', u'Câmaras municipais', - u'Sem processo', - u'Sem adesão', - u'Com adesão', - u'Convênios assinados', - u'Convênios andamento', - u'Equipadas' - ) - - projeto = "Projeto Interlegis" - - tabela = { - "regiao":REGIAO_CHOICES[regiao], + u'Não Aderidas', + u'Aderidas', + u'Conveniadas', + ) + + return { "linhas":lista, "cabecalho":cabecalho_topo, "sumario":sumario, - "projeto":projeto, - } + } + +def report_regiao(request,regiao='NE'): + + if request.POST: + if request.POST.has_key('regiao'): + regiao = request.POST['regiao'] + + REGIAO_CHOICES = { + 'SL': 'Sul', + 'SD': 'Sudeste', + 'CO': 'Centro-Oeste', + 'NE': 'Nordeste', + 'NO': 'Norte', + } + + projetos = Projeto.objects.all() + + camaras = CasaLegislativa.objects.filter(tipo__sigla='CM') + + tabelas = list() + # Geral + convenios = Convenio.objects.filter(casa_legislativa__tipo__sigla='CM') + tabela = casas_estado_to_tabela(camaras,convenios,regiao) + tabela["projeto"] = "Geral" + + tabelas.append(tabela) + + for projeto in projetos: + convenios_proj = convenios.filter(projeto=projeto) + tabela = casas_estado_to_tabela(camaras, convenios_proj,regiao) + tabela["projeto"] = projeto.nome + tabelas.append(tabela) data = datetime.datetime.now().strftime('%d/%m/%Y') hora = datetime.datetime.now().strftime('%H:%M') pisa.showLogging() response = HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = 'attachment; filename=RelatorioRegiao_' + regiao + '.pdf' + #tabelas = ({'projeto':"PI"},{'projeto':"PML"},) t = loader.get_template('convenios/tabela_regiao.html') - c = Context({'tabela':tabela,'data':data,'hora':hora}) + c = Context({'tabelas':tabelas,'regiao':REGIAO_CHOICES[regiao],'data':data,'hora':hora}) pdf = pisa.CreatePDF(t.render(c),response) if not pdf.err: pisa.startViewer(response)