diff --git a/painel/urls.py b/painel/urls.py index 9d1c1bab2..474d4b039 100644 --- a/painel/urls.py +++ b/painel/urls.py @@ -1,10 +1,11 @@ from django.conf.urls import include, url -from . views import (json_view, painel_view, painel_parlamentares_view, painel_votacao_view) +from . views import (json_presenca, json_votacao, painel_view, painel_parlamentares_view, painel_votacao_view) urlpatterns = [ url(r'^sistema/painel$', painel_view), url(r'^sistema/painel/parlamentares', painel_parlamentares_view), url(r'^sistema/painel/votacao', painel_votacao_view), - url(r'^sistema/painel/json', json_view, name='json_view'), + url(r'^sistema/painel/json_presenca', json_presenca, name='json_presenca'), + url(r'^sistema/painel/json_votacao', json_votacao, name='json_votacao'), ] diff --git a/painel/views.py b/painel/views.py index 439ef045d..dbbab8c85 100644 --- a/painel/views.py +++ b/painel/views.py @@ -6,20 +6,65 @@ from django.core import serializers import json from parlamentares.models import Parlamentar -from sessao.models import PresencaOrdemDia +from sessao.models import SessaoPlenaria, SessaoPlenariaPresenca, PresencaOrdemDia, RegistroVotacao, VotoParlamentar, OrdemDia, PresencaOrdemDia -def json_view(request): +# 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 - #error when trying to retrieve - #print(PresencaOrdemDia.objects.all()) +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] - parlamentares = serializers.serialize('json', Parlamentar.objects.all()) - return HttpResponse(parlamentares, content_type='application/json') + # Magic! http://stackoverflow.com/questions/15507171/django-filter-query-foreign-key + voto_parlamentar = VotoParlamentar.objects.filter(votacao__ordem__id = 140) - #return JsonResponse(data) # work with python dict + ordem_dia = OrdemDia.objects.get(id = 104) + + sessaoplenaria_id = ordem_dia.sessao_plenaria_id + + sessao_plenaria = SessaoPlenaria.objects.get(id = sessaoplenaria_id) + + presenca_ordem_dia = PresencaOrdemDia.objects.filter(sessao_plenaria_id = sessaoplenaria_id) + presentes_ordem_dia = [] + for p in presenca_ordem_dia: + presentes_ordem_dia.append(p.parlamentar.nome_parlamentar) + presentes_ordem_dia.sort() + 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): - return render(request, 'painel/index.html') + 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') diff --git a/sapl/settings.py b/sapl/settings.py index 51bf40aa7..f32f0e6f2 100644 --- a/sapl/settings.py +++ b/sapl/settings.py @@ -49,6 +49,7 @@ INSTALLED_APPS = ( 'materia', 'norma', 'lexml', + 'painel', 'protocoloadm', # more diff --git a/templates/painel/index.html b/templates/painel/index.html index a4f72e4d4..68984f93c 100644 --- a/templates/painel/index.html +++ b/templates/painel/index.html @@ -1,15 +1,17 @@ +{% load i18n %} +{% load staticfiles %} - + + + + +
-