mirror of https://github.com/interlegis/sigi.git
Starlone (Estagiario)
14 years ago
4 changed files with 144 additions and 121 deletions
@ -1,74 +1,107 @@ |
|||||
|
#-*- coding:utf-8 -*- |
||||
from sigi.apps.casas.models import CasaLegislativa |
from sigi.apps.casas.models import CasaLegislativa |
||||
from sigi.apps.convenios.models import Convenio, Projeto |
from sigi.apps.convenios.models import Convenio, Projeto |
||||
from sigi.apps.contatos.models import UnidadeFederativa |
from sigi.apps.contatos.models import UnidadeFederativa |
||||
|
|
||||
def charts_data(request): |
def charts_data(request): |
||||
casas = CasaLegislativa.objects.all() |
''' |
||||
|
Busca informacoes para a criacao dos graficos e resumos |
||||
|
''' |
||||
|
|
||||
|
projetos = Projeto.objects.all() |
||||
convenios = Convenio.objects.all() |
convenios = Convenio.objects.all() |
||||
|
convenios_assinados = convenios.exclude(data_retorno_assinatura=None) |
||||
|
|
||||
|
tabela_resumo_camara = busca_informacoes_camara() |
||||
|
g_conv_proj = grafico_convenio_projeto(convenios) |
||||
|
g_convassinado_proj = grafico_convenio_projeto(convenios_assinados) |
||||
|
|
||||
|
return { |
||||
|
'tabela_resumo_camara' : tabela_resumo_camara, |
||||
|
'g_conv_proj': g_conv_proj, |
||||
|
"g_convassinado_proj":g_convassinado_proj, |
||||
|
} |
||||
|
|
||||
|
def busca_informacoes_camara(): |
||||
|
''' |
||||
|
Busca informacoes no banco para montar tabela de resumo de camaras por projeto |
||||
|
Retorna um dicionario de listas |
||||
|
''' |
||||
|
casas = CasaLegislativa.objects.all() |
||||
|
camaras = casas.filter(tipo__sigla='CM') |
||||
|
convenios = Convenio.objects.filter(casa_legislativa__tipo__sigla='CM') |
||||
projetos = Projeto.objects.all() |
projetos = Projeto.objects.all() |
||||
|
|
||||
convenios_firmados = convenios.exclude(data_retorno_assinatura=None) |
convenios_assinados = convenios.exclude(data_retorno_assinatura=None) |
||||
|
convenios_em_andamento = convenios.filter(data_retorno_assinatura=None) |
||||
num_convenios_firmados = convenios_firmados.count() |
|
||||
num_convenios_nao_firmados = convenios.filter(data_retorno_assinatura=None).count() |
camaras_nao_aderidas = camaras.filter(convenio__data_adesao=None) |
||||
#num_casas_nao_aderidas = CasaLegislativa.objects.filter(convenio=None).count() |
camaras_aderidas = camaras.exclude(convenio__data_adesao=None) |
||||
#num_casas_nao_aderidas = casas.count() - convenios.exclude(data_adesao=None).count() |
|
||||
|
camaras_equipadas = camaras.exclude(convenio__data_termo_aceite=None) |
||||
# Verifica quantidade de convenios por projeto |
|
||||
convenios_por_projeto = [] |
|
||||
for p in projetos: |
|
||||
convenios_por_projeto.append(convenios_firmados.filter(projeto=p).count()) |
|
||||
|
|
||||
num_casas_regiao = [ |
|
||||
casas.filter(municipio__uf__regiao='CO').count(), |
|
||||
casas.filter(municipio__uf__regiao='NO').count(), |
|
||||
casas.filter(municipio__uf__regiao='NE').count(), |
|
||||
casas.filter(municipio__uf__regiao='SD').count(), |
|
||||
casas.filter(municipio__uf__regiao='SL').count() |
|
||||
] |
|
||||
#num_convenios_firmados_regiao = [ |
|
||||
# convenios_firmados.filter(casa_legislativa__municipio__uf__regiao='CO').count(), |
|
||||
# convenios_firmados.filter(casa_legislativa__municipio__uf__regiao='NO').count(), |
|
||||
# convenios_firmados.filter(casa_legislativa__municipio__uf__regiao='NE').count(), |
|
||||
# convenios_firmados.filter(casa_legislativa__municipio__uf__regiao='SD').count(), |
|
||||
# convenios_firmados.filter(casa_legislativa__municipio__uf__regiao='SL').count() |
|
||||
#] |
|
||||
|
|
||||
REGIAO_CHOICES = ('CO','NO','NE','SD','SL') |
|
||||
|
|
||||
# Busca numero de casas conveniadas por regiao |
|
||||
num_casas_conveniadas_regiao = [] |
|
||||
for regiao in REGIAO_CHOICES: |
|
||||
num_casas_conveniadas_regiao.append( |
|
||||
casas.filter( |
|
||||
municipio__uf__regiao=regiao |
|
||||
).exclude( |
|
||||
convenio__data_retorno_assinatura=None |
|
||||
).distinct().count() |
|
||||
) |
|
||||
|
|
||||
# Busca numero de casas sem convenio por regiao |
# Criacao das listas para o resumo de camaras por projeto |
||||
num_casas_sem_convenio_regiao = [] |
|
||||
for i in range(len(num_casas_regiao)): |
cabecalho_topo = ['','Total'] # Cabecalho superior da tabela |
||||
num_casas_sem_convenio_regiao.append( |
|
||||
num_casas_regiao[i] - num_casas_conveniadas_regiao[i] |
lista_total = [camaras.count()] |
||||
|
lista_nao_aderidas = [camaras_nao_aderidas.count()] |
||||
|
lista_aderidas = [camaras_aderidas.count()] |
||||
|
lista_convenios_assinados = [convenios_assinados.count()] |
||||
|
lista_convenios_em_andamento = [convenios_em_andamento.count()] |
||||
|
lista_camaras_equipadas = [camaras_equipadas.count()] |
||||
|
for projeto in projetos: |
||||
|
cabecalho_topo.append(projeto.sigla) |
||||
|
lista_total.append(camaras.filter(convenio__projeto=projeto).count()) |
||||
|
lista_nao_aderidas.append(camaras_nao_aderidas.filter(convenio__projeto=projeto).count()) |
||||
|
lista_aderidas.append(camaras_aderidas.filter(convenio__projeto=projeto).count()) |
||||
|
lista_convenios_assinados.append(convenios_assinados.filter(projeto=projeto).count()) |
||||
|
lista_convenios_em_andamento.append(convenios_em_andamento.filter(projeto=projeto).count()) |
||||
|
lista_camaras_equipadas.append(camaras_equipadas.filter(convenio__projeto=projeto).count()) |
||||
|
|
||||
|
# Cabecalho da esquerda na tabela |
||||
|
cabecalho_esquerda = ( |
||||
|
u'Total de câmaras municipais', |
||||
|
u'Câmaras municipais não aderidas', |
||||
|
u'Câmaras municipais aderidas', |
||||
|
u'Câmaras municipais com convênios assinados', |
||||
|
u'Câmaras municipais convênios em andamento', |
||||
|
u'Câmaras municipais equipadas' |
||||
) |
) |
||||
|
|
||||
# Verifica qual regiao tem mais convenios e guarda valor para "axis left" do grafico de regioes |
linhas = ( |
||||
num_regiao_maior = 0 |
lista_total, |
||||
for i in num_casas_regiao: |
lista_nao_aderidas, |
||||
if num_regiao_maior<i: |
lista_aderidas, |
||||
num_regiao_maior = i |
lista_convenios_assinados, |
||||
|
lista_convenios_em_andamento, |
||||
|
lista_camaras_equipadas, |
||||
|
) |
||||
|
|
||||
equip_n_recebidos = CasaLegislativa.objects.exclude(convenio=None).filter(convenio__data_termo_aceite=None).distinct().count() |
# Unindo as duas listass para que o cabecalho da esquerda fique junto com sua |
||||
equip_recebidos = CasaLegislativa.objects.exclude(convenio=None).exclude(convenio__data_termo_aceite=None).distinct().count() |
# respectiva linha |
||||
#equip_n_recebidos = convenios.filter(data_termo_aceite=None).count() |
lista_zip = zip(cabecalho_esquerda,linhas) |
||||
#equip_recebidos = convenios.exclude(data_termo_aceite=None).count() |
|
||||
|
|
||||
|
# Retornando listas em forma de dicionario |
||||
return { |
return { |
||||
'regioes_chart_data': [num_casas_conveniadas_regiao, num_casas_sem_convenio_regiao, num_regiao_maior], |
u'cabecalho_topo': cabecalho_topo, |
||||
'convenios_chart_data': [num_convenios_firmados, num_convenios_nao_firmados,], |
u'lista_zip': lista_zip, |
||||
'equipamentos_chart_data': [equip_recebidos, equip_n_recebidos], |
u'linhas' : linhas, |
||||
'projetos_chart_data': projetos, |
|
||||
'convenios_por_projeto_chart_data': convenios_por_projeto, |
} |
||||
|
|
||||
|
def grafico_convenio_projeto(convenios): |
||||
|
projetos = Projeto.objects.all() |
||||
|
|
||||
|
lista_convenios = [] |
||||
|
for projeto in projetos: |
||||
|
lista_convenios.append(convenios.filter(projeto=projeto).count()) |
||||
|
|
||||
|
dic = { |
||||
|
"total_convenios":("Total: " + str(convenios.count())), |
||||
|
"convenios":lista_convenios, |
||||
|
"projetos":projetos |
||||
} |
} |
||||
|
return dic |
||||
|
|
||||
|
|
||||
|
Loading…
Reference in new issue