diff --git a/sessao/urls.py b/sessao/urls.py index b63210bf3..5842ed8f0 100644 --- a/sessao/urls.py +++ b/sessao/urls.py @@ -3,9 +3,9 @@ from django.conf.urls import include, url from sessao.views import (ExpedienteView, MateriaOrdemDiaView, MesaView, OradorExpedienteDelete, OradorExpedienteEdit, OradorExpedienteView, PainelView, - PresencaOrdemDiaView, PresencaView, sessao_crud, - tipo_expediente_crud, tipo_resultado_votacao_crud, - tipo_sessao_crud) + PresencaOrdemDiaView, PresencaView, ResumoView, + sessao_crud, tipo_expediente_crud, + tipo_resultado_votacao_crud, tipo_sessao_crud) urlpatterns_sessao = sessao_crud.urlpatterns + [ url(r'^(?P\d+)/expediente$', @@ -25,8 +25,9 @@ urlpatterns_sessao = sessao_crud.urlpatterns + [ OradorExpedienteEdit.as_view(), name='oradoreditar'), url(r'^(?P\d+)/mesa$', MesaView.as_view(), name='mesa'), url(r'^(?P\d+)/materiaordemdia$', - MateriaOrdemDiaView.as_view(), name='materiaordemdia') - + MateriaOrdemDiaView.as_view(), name='materiaordemdia'), + url(r'^(?P\d+)/resumo$', + ResumoView.as_view(), name='resumo') ] sessao_urls = urlpatterns_sessao, sessao_crud.namespace, sessao_crud.namespace diff --git a/sessao/views.py b/sessao/views.py index 752d6759e..8852b95f6 100644 --- a/sessao/views.py +++ b/sessao/views.py @@ -8,7 +8,7 @@ from django.utils.translation import ugettext_lazy as _ from django.views.generic.edit import FormMixin from extra_views import InlineFormSetView -from materia.models import TipoMateriaLegislativa +from materia.models import Autoria, TipoMateriaLegislativa from parlamentares.models import Parlamentar from sapl.crud import build_crud @@ -539,3 +539,185 @@ class MesaView(FormMixin, sessao_crud.CrudDetailView): lista = list(set(lista_cargos) - set(lista_cargos_ocupados)) lista.sort(key=lambda x: x.descricao) return lista + + +class ResumoView(FormMixin, sessao_crud.CrudDetailView): + template_name = 'sessao/Resumo.html' + + def get(self, request, *args, **kwargs): + self.object = self.get_object() + context = self.get_context_data(object=self.object) + + # ===================================================================== + # Identificação Básica + context.update({'basica': ['Tipo de Sessão: ' + str(self.object.tipo), + 'Abertura: ' + str(self.object.data_inicio), + 'Encerramento: ' + str(self.object.data_fim) + ]}) + # ===================================================================== + # Conteúdo Multimídia + if(self.object.url_audio): + context.update({'multimidia_audio': + 'Audio: ' + str(self.object.url_audio)}) + else: + context.update({'multimidia_audio': 'Audio: Indisponivel'}) + + if(self.object.url_video): + context.update({'multimidia_video': + 'Video: ' + str(self.object.url_video)}) + else: + context.update({'multimidia_video': 'Video: Indisponivel'}) + + # ===================================================================== + # Mesa Diretora + mesa = IntegranteMesa.objects.filter( + sessao_plenaria=self.object) + + integrantes = [] + for m in mesa: + parlamentar = Parlamentar.objects.get( + id=m.parlamentar_id) + cargo = CargoMesa.objects.get( + id=m.cargo_id) + integrante = {'parlamentar': parlamentar, 'cargo': cargo} + integrantes.append(integrante) + + context.update({'mesa': integrantes}) + + # ===================================================================== + # Presença Sessão + presencas = SessaoPlenariaPresenca.objects.filter( + sessao_plen_id=self.object.id + ) + + parlamentares_sessao = [] + for p in presencas: + parlamentar = Parlamentar.objects.get( + id=p.parlamentar_id) + parlamentares_sessao.append(parlamentar) + + context.update({'presenca_sessao': parlamentares_sessao}) + + # ===================================================================== + # Expedientes + expediente = ExpedienteSessao.objects.filter( + sessao_plenaria_id=self.object.id) + + expedientes = [] + for e in expediente: + tipo = TipoExpediente.objects.get( + id=e.tipo_id) + conteudo = e.conteudo + + ex = {'tipo': tipo, 'conteudo': conteudo} + expedientes.append(ex) + + context.update({'expedientes': expedientes}) + + # ===================================================================== + # Matérias Expediente + materias = ExpedienteMateria.objects.filter( + sessao_plenaria_id=self.object.id) + + materias_expediente = [] + for m in materias: + ementa = m.observacao + titulo = m.materia + numero = m.numero_ordem + + if m.resultado: + resultado = m.resultado + else: + resultado = 'Matéria não votada' + + autoria = Autoria.objects.filter( + materia_id=m.materia_id) + if len(autoria) > 1: + autor = 'Autores: ' + else: + autor = 'Autor: ' + + for a in autoria: + autor += str(a.autor) + autor += ' ' + + mat = {'ementa': ementa, + 'titulo': titulo, + 'numero': numero, + 'resultado': resultado, + 'autor': autor + } + materias_expediente.append(mat) + + context.update({'materia_expediente': materias_expediente}) + + # ===================================================================== + # Oradores Expediente + oradores = [] + for orador in OradorExpediente.objects.filter( + sessao_plenaria_id=self.object.id): + numero_ordem = orador.numero_ordem + url_discurso = orador.url_discurso + parlamentar = Parlamentar.objects.get( + id=orador.parlamentar_id) + ora = {'numero_ordem': numero_ordem, + 'url_discurso': url_discurso, + 'parlamentar': parlamentar + } + oradores.append(ora) + + context.update({'oradores': oradores}) + + # ===================================================================== + # Presença Ordem do Dia + presencas = PresencaOrdemDia.objects.filter( + sessao_plenaria_id=self.object.id + ) + + parlamentares_ordem = [] + for p in presencas: + parlamentar = Parlamentar.objects.get( + id=p.parlamentar_id) + parlamentares_ordem.append(parlamentar) + + context.update({'presenca_ordem': parlamentares_ordem}) + + # ===================================================================== + # Matérias Ordem do Dia + ordem = OrdemDia.objects.filter( + sessao_plenaria_id=self.object.id) + + materias_ordem = [] + for o in ordem: + ementa = o.observacao + titulo = o.materia + numero = o.numero_ordem + + # Verificar resultado + if m.resultado: + resultado = m.resultado + else: + resultado = 'Matéria não votada' + + autoria = Autoria.objects.filter( + materia_id=o.materia_id) + if len(autoria) > 1: + autor = 'Autores: ' + else: + autor = 'Autor: ' + + for a in autoria: + autor += str(a.autor) + autor += ' ' + + mat = {'ementa': ementa, + 'titulo': titulo, + 'numero': numero, + 'resultado': resultado, + 'autor': autor + } + materias_ordem.append(mat) + + context.update({'materias_ordem': materias_ordem}) + + return self.render_to_response(context) diff --git a/templates/sessao/Resumo.html b/templates/sessao/Resumo.html new file mode 100644 index 000000000..2c3e30fde --- /dev/null +++ b/templates/sessao/Resumo.html @@ -0,0 +1,121 @@ +{% extends "sessao/sessaoplenaria_detail.html" %} +{% load i18n %} +{% load crispy_forms_tags %} + +{% block detail_content %} +
+ Resumo + +
+ Identificação Básica +
    + {% for b in basica %} +
  • {{b}}
  • + {% endfor %} +
+
+ +
+ Conteúdo Multimídia +
    +
  • {{multimidia_audio}}
  • +
  • {{multimidia_video}}
  • +
+
+ +
+ Mesa Diretora +
    + {% for m in mesa %} +
  • {{m.cargo}}: {{m.parlamentar.nome_parlamentar}}
  • + {% endfor %} +
+
+ +
+ Lista de Presença na Sessão +
    + {% for p in presenca_sessao %} +
  • {{p}}
  • + {% endfor %} +
+
+ +
+ Expedientes +
    + {% for e in expedientes %} +
  • + {{e.tipo}}: +
    + {{e.conteudo}} +
  • + {% endfor %} +
+
+ +
+ Matérias do Expediente +
    +
  • Matéria
  • +
  • Ementa
  • +
  • Resultado da Votação
  • +
+
    + {% for m in materia_expediente %} +
  • + {{m.numero}} - {{m.titulo}} +
    + {{m.autor}} +
  • +
  • {{m.ementa}}
  • +
  • {{m.resultado}}
  • + {% endfor %} +
+
+ +
+ Oradores do Expediente +
    +
  • Parlamentar
  • +
  • Discurso
  • +
+
    + {% for o in oradores %} +
  • {{o.numero_ordem}} - {{o.parlamentar}}
  • +
  • {{o.url_discurso}}
  • + {% endfor %} +
+
+ +
+ Lista de Presença na Ordem do Dia +
    + {% for p in presenca_ordem %} +
  • {{p}}
  • + {% endfor %} +
+
+ +
+ Matérias da Ordem do Dia +
    +
  • Matéria
  • +
  • Ementa
  • +
  • Resultado da Votação
  • +
+
    + {% for m in materias_ordem %} +
  • + {{m.numero}} - {{m.titulo}} +
    + {{m.autor}} +
  • +
  • {{m.ementa}}
  • +
  • {{m.resultado}}
  • + {% endfor %} +
+
+ +
+{% endblock detail_content %} \ No newline at end of file diff --git a/templates/sessao/sessaoplenaria_detail.html b/templates/sessao/sessaoplenaria_detail.html index 0c1bb18a2..95925ba50 100644 --- a/templates/sessao/sessaoplenaria_detail.html +++ b/templates/sessao/sessaoplenaria_detail.html @@ -9,7 +9,8 @@
{% trans 'Presença Ordem do Dia' %}
{% trans 'Oradores do Expediente' %}
{% trans 'Mesa' %}
-
{% trans 'Painel Eletrônico' %}
{% trans 'Matérias' %}
+
{% trans 'Painel Eletrônico' %}
+
{% trans 'Resumo' %}
{% endblock sections_nav %}