Browse Source

Adiciona extrato ao menu resumo

pull/2191/head
DTILegBG 7 years ago
parent
commit
d8406fdeb7
  1. 4
      sapl/sessao/urls.py
  2. 250
      sapl/sessao/views.py
  3. 12
      sapl/templates/sessao/blocos_ata/assinaturas.html
  4. 0
      sapl/templates/sessao/blocos_ata/conteudo_multimidia.html
  5. 8
      sapl/templates/sessao/blocos_ata/expedientes.html
  6. 7
      sapl/templates/sessao/blocos_ata/identificacao_basica.html
  7. 9
      sapl/templates/sessao/blocos_ata/lista_presenca.html
  8. 9
      sapl/templates/sessao/blocos_ata/lista_presenca_ordem_dia.html
  9. 24
      sapl/templates/sessao/blocos_ata/materias_expediente.html
  10. 22
      sapl/templates/sessao/blocos_ata/materias_ordem_dia.html
  11. 9
      sapl/templates/sessao/blocos_ata/mesa_diretora.html
  12. 11
      sapl/templates/sessao/blocos_ata/oradores_expediente.html
  13. 8
      sapl/templates/sessao/blocos_ata/oradores_explicacoes.html
  14. 28
      sapl/templates/sessao/resumo_ata.html
  15. 6
      sapl/templates/sessao/subnav.yaml

4
sapl/sessao/urls.py

@ -10,7 +10,7 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
PesquisarPautaSessaoView, PesquisarPautaSessaoView,
PesquisarSessaoPlenariaView, PesquisarSessaoPlenariaView,
PresencaOrdemDiaView, PresencaView, PresencaOrdemDiaView, PresencaView,
ResumoOrdenacaoView, ResumoView, SessaoCrud, ResumoOrdenacaoView, ResumoView, ResumoAtaView, SessaoCrud,
TipoExpedienteCrud, TipoResultadoVotacaoCrud, TipoExpedienteCrud, TipoResultadoVotacaoCrud,
TipoSessaoCrud, VotacaoEditView, TipoSessaoCrud, VotacaoEditView,
VotacaoExpedienteEditView, VotacaoExpedienteEditView,
@ -109,6 +109,8 @@ urlpatterns = [
name='presencaordemdia'), name='presencaordemdia'),
url(r'^sessao/(?P<pk>\d+)/resumo$', url(r'^sessao/(?P<pk>\d+)/resumo$',
ResumoView.as_view(), name='resumo'), ResumoView.as_view(), name='resumo'),
url(r'^sessao/(?P<pk>\d+)/resumo_ata$',
ResumoAtaView.as_view(), name='resumo_ata'),
url(r'^sessao/pesquisar-sessao$', url(r'^sessao/pesquisar-sessao$',
PesquisarSessaoPlenariaView.as_view(), name='pesquisar_sessao'), PesquisarSessaoPlenariaView.as_view(), name='pesquisar_sessao'),
url(r'^sessao/(?P<pk>\d+)/matordemdia/votnom/(?P<oid>\d+)/(?P<mid>\d+)$', url(r'^sessao/(?P<pk>\d+)/matordemdia/votnom/(?P<oid>\d+)/(?P<mid>\d+)$',

250
sapl/sessao/views.py

@ -1448,7 +1448,257 @@ class ResumoView(DetailView):
'decimo_ordenacao': dict_ord_template['oradores_expli']}) 'decimo_ordenacao': dict_ord_template['oradores_expli']})
return self.render_to_response(context) return self.render_to_response(context)
class ResumoAtaView(DetailView):
template_name = 'sessao/resumo_ata.html'
model = SessaoPlenaria
def get(self, request, *args, **kwargs):
self.object = self.get_object()
context = self.get_context_data(object=self.object)
# =====================================================================
# Identificação Básica
data_inicio = self.object.data_inicio
abertura = data_inicio.strftime('%d/%m/%Y') if data_inicio else ''
data_fim = self.object.data_fim
encerramento = data_fim.strftime('%d/%m/%Y') + ' -' if data_fim else ''
context.update({'basica': [
_('Tipo de Sessão: %(tipo)s') % {'tipo': self.object.tipo},
_('Abertura: %(abertura)s - %(hora_inicio)s') % {
'abertura': abertura, 'hora_inicio': self.object.hora_inicio},
_('Encerramento: %(encerramento)s %(hora_fim)s') % {
'encerramento': encerramento, 'hora_fim': self.object.hora_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: Indisponível')})
if self.object.url_video:
context.update({'multimidia_video':
_('Video: ') + str(self.object.url_video)})
else:
context.update({'multimidia_video': _('Video: Indisponível')})
# =====================================================================
# 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': ordenar_integrantes_por_cargo(integrantes)})
# =====================================================================
# Presença Sessão
presencas = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=self.object.id
).order_by('parlamentar__nome_parlamentar')
parlamentares_sessao = [p.parlamentar for p in presencas]
context.update({'presenca_sessao': parlamentares_sessao})
# =====================================================================
# Expedientes
expediente = ExpedienteSessao.objects.filter(
sessao_plenaria_id=self.object.id).order_by('tipo__nome')
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.materia.ementa
titulo = m.materia
numero = m.numero_ordem
tramitacao = m.materia.tramitacao_set.last()
turno = None
if tramitacao:
turno = get_turno(tramitacao.turno)
rv = m.registrovotacao_set.first()
if rv:
resultado = rv.tipo_resultado_votacao.nome
resultado_observacao = rv.observacao
else:
resultado = _('Matéria não votada')
resultado_observacao = _(' ')
autoria = Autoria.objects.filter(materia_id=m.materia_id)
autor = [str(x.autor) for x in autoria]
mat = {'ementa': ementa,
'titulo': titulo,
'numero': numero,
'turno': turno,
'resultado': resultado,
'resultado_observacao': resultado_observacao,
'autor': autor,
'numero_protocolo': m.materia.numero_protocolo,
'numero_processo': m.materia.numeracao_set.last()
}
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).order_by('numero_ordem'):
numero_ordem = orador.numero_ordem
url_discurso = orador.url_discurso
observacao = orador.observacao
parlamentar = Parlamentar.objects.get(
id=orador.parlamentar_id)
ora = {'numero_ordem': numero_ordem,
'url_discurso': url_discurso,
'parlamentar': parlamentar,
'observacao' : observacao
}
oradores.append(ora)
context.update({'oradores': oradores})
# =====================================================================
# Presença Ordem do Dia
presencas = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=self.object.id
).order_by('parlamentar__nome_parlamentar')
parlamentares_ordem = [p.parlamentar for p in presencas]
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.materia.ementa
titulo = o.materia
numero = o.numero_ordem
tramitacao = o.materia.tramitacao_set.last()
turno = None
if tramitacao:
turno = get_turno(tramitacao.turno)
# Verificar resultado
rv = o.registrovotacao_set.filter(materia=o.materia).first()
if rv:
resultado = rv.tipo_resultado_votacao.nome
resultado_observacao = rv.observacao
else:
resultado = _('Matéria não votada')
resultado_observacao = _(' ')
autoria = Autoria.objects.filter(
materia_id=o.materia_id)
autor = [str(x.autor) for x in autoria]
mat = {'ementa': ementa,
'titulo': titulo,
'numero': numero,
'turno': turno,
'resultado': resultado,
'resultado_observacao': resultado_observacao,
'autor': autor,
'numero_protocolo': o.materia.numero_protocolo,
'numero_processo': o.materia.numeracao_set.last()
}
materias_ordem.append(mat)
context.update({'materias_ordem': materias_ordem})
# =====================================================================
# Oradores nas Explicações Pessoais
oradores_explicacoes = []
for orador in Orador.objects.filter(
sessao_plenaria_id=self.object.id).order_by('numero_ordem'):
for parlamentar in Parlamentar.objects.filter(
id=orador.parlamentar.id):
partido_sigla = Filiacao.objects.filter(
parlamentar=parlamentar).last()
if not partido_sigla:
sigla = ''
else:
sigla = partido_sigla.partido.sigla
oradores = {
'numero_ordem': orador.numero_ordem,
'parlamentar': parlamentar,
'sgl_partido': sigla
}
oradores_explicacoes.append(oradores)
context.update({'oradores_explicacoes': oradores_explicacoes})
# =====================================================================
# Indica a ordem com a qual o template será renderizado
ordenacao = ResumoOrdenacao.objects.first()
dict_ord_template = {
'cont_mult': 'conteudo_multimidia.html',
'exp': 'expedientes.html',
'id_basica': 'identificacao_basica.html',
'lista_p': 'lista_presenca.html',
'lista_p_o_d': 'lista_presenca_ordem_dia.html',
'mat_exp': 'materias_expediente.html',
'mat_o_d': 'materias_ordem_dia.html',
'mesa_d': 'mesa_diretora.html',
'oradores_exped': 'oradores_expediente.html',
'oradores_expli': 'oradores_explicacoes.html'
}
if ordenacao:
context.update(
{'primeiro_ordenacao': dict_ord_template[ordenacao.primeiro],
'segundo_ordenacao': dict_ord_template[ordenacao.segundo],
'terceiro_ordenacao': dict_ord_template[ordenacao.terceiro],
'quarto_ordenacao': dict_ord_template[ordenacao.quarto],
'quinto_ordenacao': dict_ord_template[ordenacao.quinto],
'sexto_ordenacao': dict_ord_template[ordenacao.sexto],
'setimo_ordenacao': dict_ord_template[ordenacao.setimo],
'oitavo_ordenacao': dict_ord_template[ordenacao.oitavo],
'nono_ordenacao': dict_ord_template[ordenacao.nono],
'decimo_ordenacao': dict_ord_template[ordenacao.decimo]})
else:
context.update(
{'primeiro_ordenacao': dict_ord_template['id_basica'],
'segundo_ordenacao': dict_ord_template['cont_mult'],
'terceiro_ordenacao': dict_ord_template['mesa_d'],
'quarto_ordenacao': dict_ord_template['lista_p'],
'quinto_ordenacao': dict_ord_template['exp'],
'sexto_ordenacao': dict_ord_template['mat_exp'],
'setimo_ordenacao': dict_ord_template['oradores_exped'],
'oitavo_ordenacao': dict_ord_template['lista_p_o_d'],
'nono_ordenacao': dict_ord_template['mat_o_d'],
'decimo_ordenacao': dict_ord_template['oradores_expli']})
return self.render_to_response(context)
class ExpedienteView(FormMixin, DetailView): class ExpedienteView(FormMixin, DetailView):
template_name = 'sessao/expediente.html' template_name = 'sessao/expediente.html'

12
sapl/templates/sessao/blocos_ata/assinaturas.html

@ -0,0 +1,12 @@
{% load common_tags %}
</p>
</p>
<legend>Assinatura Parlamentares Presentes</legend>
<div class="row">
{% for p in presenca_ordem %}
<div class="col-md-12">{{p.nome_parlamentar}} / {{ p|filiacao_data_filter:object.data_inicio }}</p>
</div>
{% endfor %}
</div>
</fieldset>

0
sapl/templates/sessao/blocos_ata/conteudo_multimidia.html

8
sapl/templates/sessao/blocos_ata/expedientes.html

@ -0,0 +1,8 @@
<fieldset>
<p align="justify">
<strong>Expedientes: </strong> {% for e in expedientes %}
<b>{{e.tipo}}</b>:
{{e.conteudo}}
{% endfor %}
</p>
</fieldset>

7
sapl/templates/sessao/blocos_ata/identificacao_basica.html

@ -0,0 +1,7 @@
<fieldset>
<p align="justify">
<strong>Identificação Básica: </strong> {% for b in basica %}
{{b}} -
{% endfor %}
</p>
</fieldset>

9
sapl/templates/sessao/blocos_ata/lista_presenca.html

@ -0,0 +1,9 @@
{% load common_tags %}
<fieldset>
<p align="justify">
<strong>Lista de Presença na Sessão: </strong> {% for p in presenca_sessao %}
{{p.nome_parlamentar}} / {{ p|filiacao_data_filter:object.data_inicio }} -
{% endfor %}
</p>
</fieldset>

9
sapl/templates/sessao/blocos_ata/lista_presenca_ordem_dia.html

@ -0,0 +1,9 @@
{% load common_tags %}
<fieldset>
<p align="justify">
<strong>Lista de Presença na Ordem do Dia: </strong> {% for p in presenca_ordem %}
{{p.nome_parlamentar}} / {{ p|filiacao_data_filter:object.data_inicio }}
{% endfor %}
</p>
</fieldset>

24
sapl/templates/sessao/blocos_ata/materias_expediente.html

@ -0,0 +1,24 @@
<fieldset>
<p align="justify">
<strong>Matérias do Expediente: </strong> {% for m in materia_expediente %}
<b>{{m.numero}} - {{m.titulo}}</b>
{% if m.turno %}
Turno: {{m.turno}}
{% endif %}
Autor{{ m.autor|length|pluralize:"es" }}: {{ m.autor|join:', ' }}
{% if m.numero_protocolo %}
Número de Protocolo: {{ m.numero_protocolo }}
{% endif %}
{% if m.numero_processo %}
Processo: {{ m.numero_processo }}
{% endif %}
{{m.ementa|safe}}
{{m.resultado}} {{m.resultado_observacao}}</td>
{% endfor %}
</p>
</fieldset>

22
sapl/templates/sessao/blocos_ata/materias_ordem_dia.html

@ -0,0 +1,22 @@
<fieldset>
<p align="justify">
<strong>Matérias da Ordem do Dia: </strong> {% for m in materias_ordem %}
<b>{{m.numero}} - {{m.titulo}} </b>
{% if m.turno %}
Turno:{{m.turno}}
{% endif %}
Autor{{ m.autor|length|pluralize:"es" }}: {{ m.autor|join:', ' }}
{% if m.numero_protocolo %}
Número de Protocolo: {{ m.numero_protocolo }}
{% endif %}
{% if m.numero_processo %}
Processo: {{ m.numero_processo }}
{% endif %}
{{m.ementa|safe}}
{{m.resultado}} {{m.resultado_observacao}}
{% endfor %}
</p>
</fieldset>

9
sapl/templates/sessao/blocos_ata/mesa_diretora.html

@ -0,0 +1,9 @@
<fieldset>
<p align="justify">
<strong>Mesa Diretora: </strong>{% for m in mesa %}
{{m.cargo}}:
{{m.parlamentar.nome_parlamentar}} / {{ m.parlamentar.filiacao_atual }} ;
{% endfor %}
</p>
</fieldset>

11
sapl/templates/sessao/blocos_ata/oradores_expediente.html

@ -0,0 +1,11 @@
<fieldset>
<p align="justify">
<strong>Oradores do Expediente: </strong>{% for o in oradores %}
<div><b>{{o.numero_ordem}}</b> - {{o.parlamentar}}</div>
<div>{{o.url_discurso}}</div>
<div>{{o.observacao}}</div>
</br>
{% endfor %}
</p>
</div>
</fieldset>

8
sapl/templates/sessao/blocos_ata/oradores_explicacoes.html

@ -0,0 +1,8 @@
<fieldset>
<p align="justify">
<strong>Oradores das Explicações Pessoais: </strong>{% for o in oradores_explicacoes %}
<b>{{o.numero_ordem}}</b> - {{o.parlamentar.nome_parlamentar}} / {{ o.parlamentar.filiacao_atual }};
{{o.url_discurso}}
{% endfor %}
</p>
</fieldset>

28
sapl/templates/sessao/resumo_ata.html

@ -0,0 +1,28 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block title %}
<h1 class="page-header">
Extrato Eletrônico da {{sessaoplenaria}}
</h1>
{% endblock %}
{% block detail_content %}
{% include 'sessao/blocos_ata/'|add:primeiro_ordenacao %}
{% include 'sessao/blocos_ata/'|add:segundo_ordenacao %}
{% include 'sessao/blocos_ata/'|add:terceiro_ordenacao %}
{% include 'sessao/blocos_ata/'|add:quarto_ordenacao %}
{% include 'sessao/blocos_ata/'|add:quinto_ordenacao %}
{% include 'sessao/blocos_ata/'|add:sexto_ordenacao %}
{% include 'sessao/blocos_ata/'|add:setimo_ordenacao %}
{% include 'sessao/blocos_ata/'|add:oitavo_ordenacao %}
{% include 'sessao/blocos_ata/'|add:nono_ordenacao %}
{% include 'sessao/blocos_ata/'|add:decimo_ordenacao %}
{% include 'sessao/blocos_ata/assinaturas.html' %}
{% endblock detail_content %}

6
sapl/templates/sessao/subnav.yaml

@ -33,4 +33,8 @@
check_permission: painel.list_painel check_permission: painel.list_painel
- title: {% trans 'Resumo' %} - title: {% trans 'Resumo' %}
url: resumo children:
- title: {% trans 'Resumo' %}
url: resumo
- title: {% trans 'Extrato' %}
url: resumo_ata
Loading…
Cancel
Save