|
|
@ -1,12 +1,13 @@ |
|
|
|
#-*- coding:utf-8 -*- |
|
|
|
from itertools import cycle |
|
|
|
import datetime |
|
|
|
|
|
|
|
from sigi.apps.casas.models import CasaLegislativa |
|
|
|
from sigi.apps.convenios.models import Convenio, Projeto |
|
|
|
from sigi.apps.servicos.models import TipoServico |
|
|
|
from sigi.apps.diagnosticos.models import Diagnostico |
|
|
|
from sigi.apps.metas.models import Meta |
|
|
|
|
|
|
|
|
|
|
|
def charts_data(request): |
|
|
|
""" |
|
|
|
Busca informacoes para a criacao dos graficos e resumos |
|
|
@ -18,17 +19,15 @@ def charts_data(request): |
|
|
|
tabela_resumo_camara = busca_informacoes_camara() |
|
|
|
tabela_resumo_seit = busca_informacoes_seit() |
|
|
|
tabela_resumo_diagnostico = busca_informacoes_diagnostico() |
|
|
|
g_conv_proj = grafico_convenio_projeto(convenios) |
|
|
|
g_convassinado_proj = grafico_convenio_projeto(convenios_assinados) |
|
|
|
|
|
|
|
return { |
|
|
|
dados_graficos_convenio_projeto = [(1, grafico_convenio_projeto(convenios)), |
|
|
|
(2, grafico_convenio_projeto(convenios_assinados))] |
|
|
|
return { |
|
|
|
'tabela_resumo_camara': tabela_resumo_camara, |
|
|
|
'tabela_resumo_seit': tabela_resumo_seit, |
|
|
|
'tabela_resumo_diagnostico': tabela_resumo_diagnostico, |
|
|
|
'g_conv_proj': g_conv_proj, |
|
|
|
"g_convassinado_proj": g_convassinado_proj, |
|
|
|
'dados_graficos_convenio_projeto': dados_graficos_convenio_projeto, |
|
|
|
'metas': Meta.objects.all(), |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
def busca_informacoes_camara(): |
|
|
@ -48,7 +47,7 @@ def busca_informacoes_camara(): |
|
|
|
|
|
|
|
convenios_com_aceite = convenios.exclude(data_termo_aceite=None) |
|
|
|
|
|
|
|
camaras_sem_processo = camaras.filter(convenio=None) |
|
|
|
camaras_sem_processo = camaras.filter(convenio=None) |
|
|
|
|
|
|
|
# Criacao das listas para o resumo de camaras por projeto |
|
|
|
|
|
|
@ -75,7 +74,7 @@ def busca_informacoes_camara(): |
|
|
|
lista_convenios_assinados.append(camaras.filter(convenio__in=conv_assinados_proj).count()) |
|
|
|
lista_convenios_em_andamento.append(camaras.filter(convenio__in=conv_em_andamento_proj).count()) |
|
|
|
lista_camaras_equipadas.append(camaras.filter(convenio__in=conv_equipadas_proj).count()) |
|
|
|
|
|
|
|
|
|
|
|
# Monta linhas de diagnosticos |
|
|
|
lista_diagnosticos_digitados = ['', '', Diagnostico.objects.count()] |
|
|
|
lista_diagnosticos_publicados = ['', '', Diagnostico.objects.filter(publicado=True).count()] |
|
|
@ -108,25 +107,49 @@ def busca_informacoes_camara(): |
|
|
|
lista_zip = zip(cabecalho_esquerda,linhas) |
|
|
|
|
|
|
|
# Retornando listas em forma de dicionario |
|
|
|
return { |
|
|
|
return { |
|
|
|
u'cabecalho_topo': cabecalho_topo, |
|
|
|
u'lista_zip': lista_zip, |
|
|
|
u'total_camaras': camaras.count(), |
|
|
|
u'camaras_sem_processo': camaras_sem_processo.count(), |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
def grafico_convenio_projeto(convenios): |
|
|
|
|
|
|
|
colors = cycle(['#7cb5ec', |
|
|
|
'#434348', |
|
|
|
'#90ed7d', |
|
|
|
'#f7a35c', |
|
|
|
'#8085e9', |
|
|
|
'#f15c80', |
|
|
|
'#e4d354', |
|
|
|
'#8085e8', |
|
|
|
'#8d4653', |
|
|
|
'#91e8e1', ]) |
|
|
|
|
|
|
|
# colors = cycle(base_colors) |
|
|
|
highlights = cycle(['#B0D3F4', |
|
|
|
'#8E8E91', |
|
|
|
'#BCF4B1', |
|
|
|
'#FAC89D', |
|
|
|
'#B3B6F2', |
|
|
|
'#F79DB3', |
|
|
|
'#EFE598', |
|
|
|
'#B3B6F1', |
|
|
|
'#BB9098', |
|
|
|
'#BDF1ED', ]) |
|
|
|
|
|
|
|
def grafico_convenio_projeto(convenios): |
|
|
|
projetos = Projeto.objects.all() |
|
|
|
|
|
|
|
lista_projetos = [] |
|
|
|
for projeto in projetos: |
|
|
|
lista_projetos.append((projeto.nome, convenios.filter(projeto=projeto).count())) |
|
|
|
|
|
|
|
total_convenios = "Total: " + str(convenios.count()) |
|
|
|
|
|
|
|
lista_projetos.insert(0, total_convenios) |
|
|
|
|
|
|
|
lista_projetos = [(projeto.nome, |
|
|
|
convenios.filter(projeto=projeto).count(), |
|
|
|
colors.next(), |
|
|
|
highlights.next()) |
|
|
|
for projeto in projetos] |
|
|
|
# print lista_projetos |
|
|
|
# total_convenios = "Total: " + str(convenios.count()) |
|
|
|
# lista_projetos.insert(0, total_convenios) |
|
|
|
return lista_projetos |
|
|
|
|
|
|
|
|
|
|
@ -138,14 +161,14 @@ def busca_informacoes_seit(): |
|
|
|
'total': 'Total de casas atendidas', |
|
|
|
'novos_mes_anterior': 'Novas casas em %s/%s' % (mes_anterior.month, mes_anterior.year), |
|
|
|
'novos_mes_atual': 'Novas casas em %s/%s' % (mes_atual.month, mes_atual.year)}] |
|
|
|
|
|
|
|
|
|
|
|
for tipo_servico in TipoServico.objects.all(): |
|
|
|
result.append( |
|
|
|
{'nome': tipo_servico.nome, |
|
|
|
'total': tipo_servico.servico_set.filter(data_desativacao=None).count(), |
|
|
|
'novos_mes_anterior': tipo_servico.servico_set.filter(data_desativacao=None, data_ativacao__year=mes_anterior.year, data_ativacao__month=mes_anterior.month).count(), |
|
|
|
'novos_mes_atual': tipo_servico.servico_set.filter(data_desativacao=None, data_ativacao__year=mes_atual.year, data_ativacao__month=mes_atual.month).count(), |
|
|
|
} |
|
|
|
} |
|
|
|
) |
|
|
|
|
|
|
|
return result |
|
|
@ -155,4 +178,4 @@ def busca_informacoes_diagnostico(): |
|
|
|
return [ |
|
|
|
{'title': 'Diagnósticos digitados', 'count': Diagnostico.objects.count()}, |
|
|
|
{'title': 'Diagnósticos publicados', 'count': Diagnostico.objects.filter(publicado=True).count()}, |
|
|
|
] |
|
|
|
] |
|
|
|