from django.shortcuts import render from django.http import HttpResponse from django.http import JsonResponse from django.core import serializers import json from parlamentares.models import Parlamentar from parlamentares.models import Filiacao from sessao.models import SessaoPlenaria, SessaoPlenariaPresenca, PresencaOrdemDia, RegistroVotacao, VotoParlamentar, OrdemDia, PresencaOrdemDia # REST web services def json_presenca(request): presencas = PresencaOrdemDia.objects.filter(sessao_plenaria_id = 50) parlamentares = [] for p in presencas: parlamentares.append(p.parlamentar) #parlamentares = serializers.serialize('json', Parlamentar.objects.all()) parlamentares = serializers.serialize('json', parlamentares) return HttpResponse(parlamentares, content_type='application/json') #return JsonResponse(data) # work with python dict def json_votacao(request): #TODO: se tentar usar objects.get(ordem_id = 104 ocorre a msg: 'RegistroVotacao' object does not support indexing #TODO; tratar o caso de vir vazio votacao = RegistroVotacao.objects.filter(ordem_id = 104)[0] # Magic! http://stackoverflow.com/questions/15507171/django-filter-query-foreign-key voto_parlamentar = VotoParlamentar.objects.filter(votacao__ordem__id = 140) ordem_dia = OrdemDia.objects.get(id = 104) sessaoplenaria_id = ordem_dia.sessao_plenaria_id sessao_plenaria = SessaoPlenaria.objects.get(id = sessaoplenaria_id) # Pra recuperar o partido do parlamentar tem que fazer OUTRA query, deve ter uma # forma de fazer isso na base do join de data models. filiacao = Filiacao.objects.filter(data_desfiliacao__isnull=True) map = {} for f in filiacao: map[f.parlamentar.nome_parlamentar] = f.partido.sigla presenca_ordem_dia = PresencaOrdemDia.objects.filter(sessao_plenaria_id = sessaoplenaria_id) presentes_ordem_dia = [] for p in presenca_ordem_dia: nome_parlamentar = p.parlamentar.nome_parlamentar presentes_ordem_dia.append(nome_parlamentar + " / " + map[nome_parlamentar]) total_votos = votacao.numero_votos_sim + votacao.numero_votos_nao + votacao.numero_abstencoes sessao_plenaria_presenca = SessaoPlenariaPresenca.objects.filter(id = sessaoplenaria_id) presentes_sessao_plenaria = [] for p in sessao_plenaria_presenca: presentes_sessao_plenaria.append(p.parlamentar.nome_parlamentar) votacao_json = {"sessao_plenaria": str(sessao_plenaria), "sessao_plenaria_data": sessao_plenaria.data_inicio, "sessao_plenaria_hora_inicio": sessao_plenaria.hora_inicio, "materia_legislativa_texto": ordem_dia.materia.ementa, "observacao_materia": ordem_dia.materia.observacao, "tipo_votacao": ordem_dia.tipo_votacao, # TODO: verbose name "numero_votos_sim": votacao.numero_votos_sim, "numero_votos_nao": votacao.numero_votos_nao, "numero_abstencoes": votacao.numero_abstencoes, "total_votos": total_votos, "tipo_resultado": votacao.tipo_resultado_votacao.nome.upper(), "presentes_ordem_dia": presentes_ordem_dia, "presentes_sessao_plenaria": presentes_sessao_plenaria, } return JsonResponse(votacao_json) # UI views def painel_view(request): context = {'head_title': 'Painel Plenário', 'title': '3a. Sessao Ordinária do Município XYZ'} return render(request, 'painel/index.html', {'context': context}) def painel_parlamentares_view(request): return render(request, 'painel/parlamentares.html') def painel_votacao_view(request): return render(request, 'painel/votacao.html')