Browse Source

Fix #2403 Adiciona Oradores da Ordem do Dia (#2662)

* Adicionar oradores da ordem do dia

* Atualizar sessao/forms.py
pull/2683/head
João Rodrigues 6 years ago
committed by Cesar Carvalho
parent
commit
1e00c7d7c9
  1. 24
      sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py
  2. 44
      sapl/relatorios/views.py
  3. 1
      sapl/rules/map_rules.py
  4. 55
      sapl/sessao/forms.py
  5. 34
      sapl/sessao/migrations/0034_oradorordemdia.py
  6. 20
      sapl/sessao/migrations/0035_resumoordenacao_decimo_quarto.py
  7. 9
      sapl/sessao/models.py
  8. 7
      sapl/sessao/urls.py
  9. 76
      sapl/sessao/views.py
  10. 1
      sapl/templates/relatorios/relatorio_ata.html
  11. 13
      sapl/templates/sessao/blocos_ata/oradores_ordemdia.html
  12. 15
      sapl/templates/sessao/blocos_resumo/oradores_ordemdia.html
  13. 6
      sapl/templates/sessao/layouts.yaml
  14. 3
      sapl/templates/sessao/resumo.html
  15. 1
      sapl/templates/sessao/resumo_ata.html
  16. 2
      sapl/templates/sessao/subnav.yaml

24
sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py

@ -340,6 +340,24 @@ def votacao_vot_nom(lst_votacao_vot_nom):
return tmp
def oradores_ordemdia(lst_oradores_ordemdia):
"""
"""
tmp = ''
tmp += '\t\t<para style="P1">Oradores da Ordem do Dia</para>\n'
tmp += '\t\t<para style="P2">\n'
tmp += '\t\t\t<font color="white"> <br/></font>\n'
tmp += '\t\t</para>\n'
for orador_ordemdia in lst_oradores_ordemdia:
tmp += '\t\t<para style="P2" spaceAfter="5"><b>' + \
str(orador_ordemdia['num_ordem']) + '</b> - ' + \
orador_ordemdia['nome_parlamentar'] + '/' + \
str(orador_ordemdia['sigla']) + ' - ' + \
str(orador_ordemdia['observacao']) + '</para>\n'
return tmp
def oradores(lst_oradores):
"""
@ -374,7 +392,7 @@ def ocorrencias(lst_ocorrencias):
return tmp
def principal(rodape_dic, imagem, inf_basicas_dic, lst_mesa, lst_presenca_sessao, lst_ausencia_sessao, lst_expedientes, lst_expediente_materia, lst_expediente_materia_vot_nom, lst_oradores_expediente, lst_presenca_ordem_dia, lst_votacao, lst_votacao_vot_nom, lst_oradores, lst_ocorrencias):
def principal(rodape_dic, imagem, inf_basicas_dic, lst_mesa, lst_presenca_sessao, lst_ausencia_sessao, lst_expedientes, lst_expediente_materia, lst_expediente_materia_vot_nom, lst_oradores_expediente, lst_presenca_ordem_dia, lst_votacao, lst_votacao_vot_nom, lst_oradores_ordemdia, lst_oradores, lst_ocorrencias):
"""
"""
arquivoPdf = str(int(time.time() * 100)) + ".pdf"
@ -409,6 +427,7 @@ def principal(rodape_dic, imagem, inf_basicas_dic, lst_mesa, lst_presenca_sessao
'v_n_mat_o_d': votacao_vot_nom(lst_votacao_vot_nom),
'mesa_d': mesa(lst_mesa),
'oradores_exped': oradores_expediente(lst_oradores_expediente),
'oradores_o_d': oradores_ordemdia(lst_oradores_ordemdia),
'oradores_expli': oradores(lst_oradores),
'ocorr_sessao': ocorrencias(lst_ocorrencias)
}
@ -428,6 +447,7 @@ def principal(rodape_dic, imagem, inf_basicas_dic, lst_mesa, lst_presenca_sessao
tmp += dict_ord_template[ordenacao.decimo_primeiro]
tmp += dict_ord_template[ordenacao.decimo_segundo]
tmp += dict_ord_template[ordenacao.decimo_terceiro]
tmp += dict_ord_template[ordenacao.decimo_quarto]
except KeyError as e:
logger.error("KeyError: " + str(e) + ". Erro ao tentar utilizar "
"configuração de ordenação. Utilizando ordenação padrão.")
@ -441,6 +461,7 @@ def principal(rodape_dic, imagem, inf_basicas_dic, lst_mesa, lst_presenca_sessao
tmp += presenca_ordem_dia(lst_presenca_ordem_dia)
tmp += votacao(lst_votacao)
tmp += votacao_vot_nom(lst_votacao_vot_nom)
tmp += oradores_ordemdia(lst_oradores_ordemdia)
tmp += oradores(lst_oradores)
tmp += ocorrencias(lst_ocorrencias)
@ -455,6 +476,7 @@ def principal(rodape_dic, imagem, inf_basicas_dic, lst_mesa, lst_presenca_sessao
tmp += presenca_ordem_dia(lst_presenca_ordem_dia)
tmp += votacao(lst_votacao)
tmp += votacao_vot_nom(lst_votacao_vot_nom)
tmp += oradores_ordemdia(lst_oradores_ordemdia)
tmp += oradores(lst_oradores)
tmp += ocorrencias(lst_ocorrencias)

44
sapl/relatorios/views.py

@ -23,15 +23,16 @@ from sapl.sessao.models import (ExpedienteMateria, ExpedienteSessao,
Orador, OradorExpediente,
OrdemDia, PresencaOrdemDia, SessaoPlenaria,
SessaoPlenariaPresenca, OcorrenciaSessao,
RegistroVotacao, VotoParlamentar)
RegistroVotacao, VotoParlamentar, OradorOrdemDia)
from sapl.settings import STATIC_ROOT
from sapl.utils import LISTA_DE_UFS, TrocaTag, filiacao_data
from sapl.sessao.views import (get_identificação_basica, get_mesa_diretora,
get_presenca_sessao, get_expedientes,
get_materias_expediente, get_oradores_expediente,
get_presenca_sessao,get_expedientes,
get_materias_expediente,get_oradores_expediente,
get_presenca_ordem_do_dia, get_materias_ordem_do_dia,
get_oradores_explicações_pessoais, get_ocorrencias_da_sessão, get_assinaturas)
get_oradores_ordemdia,
get_oradores_explicações_pessoais, get_ocorrencias_da_sessão)
from .templates import (pdf_capa_processo_gerar,
pdf_documento_administrativo_gerar, pdf_espelho_gerar,
@ -780,6 +781,35 @@ def get_sessao_plenaria(sessao, casa):
}
lst_votacao_vot_nom.append(dic_votacao_vot_nom)
# Lista dos oradores da Ordem do Dia
lst_oradores_ordemdia = []
oradores_ordem_dia = OradorOrdemDia.objects.filter(
sessao_plenaria=sessao
).order_by('numero_ordem')
for orador_ordemdia in oradores_ordem_dia:
parlamentar_orador = Parlamentar.objects.get(
id=orador_ordemdia.parlamentar.id
)
sigla_partido = Filiacao.objects.filter(
parlamentar=parlamentar_orador
).first()
if not sigla_partido:
sigla_p = ""
else:
sigla_p = sigla_partido.partido.sigla
dic_oradores_ordemdia = {
'num_ordem': orador_ordemdia.numero_ordem,
'nome_parlamentar': parlamentar_orador.nome_parlamentar,
'observacao': orador_ordemdia.observacao,
'sigla': sigla_p
}
lst_oradores_ordemdia.append(dic_oradores_ordemdia)
# Lista dos oradores nas Explicações Pessoais
lst_oradores = []
for orador in Orador.objects.filter(
@ -830,6 +860,7 @@ def get_sessao_plenaria(sessao, casa):
lst_presenca_ordem_dia,
lst_votacao,
lst_votacao_vot_nom,
lst_oradores_ordemdia,
lst_oradores,
lst_ocorrencias)
@ -886,7 +917,8 @@ def relatorio_sessao_plenaria(request, pk):
lst_oradores_expediente,
lst_presenca_ordem_dia,
lst_votacao,
lst_votacao_vot_nom,
lst_votacao_vot_nom,
lst_oradores_ordemdia,
lst_oradores,
lst_ocorrencias) = get_sessao_plenaria(sessao, casa)
@ -910,6 +942,7 @@ def relatorio_sessao_plenaria(request, pk):
lst_presenca_ordem_dia,
lst_votacao,
lst_votacao_vot_nom,
lst_oradores_ordemdia,
lst_oradores,
lst_ocorrencias)
@ -1256,6 +1289,7 @@ def resumo_ata_pdf(request,pk):
context.update(get_oradores_expediente(sessao_plenaria))
context.update(get_presenca_ordem_do_dia(sessao_plenaria))
context.update(get_materias_ordem_do_dia(sessao_plenaria))
context.update(get_oradores_ordemdia(sessao_plenaria))
context.update(get_oradores_explicações_pessoais(sessao_plenaria))
context.update(get_ocorrencias_da_sessão(sessao_plenaria))
context.update(get_assinaturas(sessao_plenaria))

1
sapl/rules/map_rules.py

@ -175,6 +175,7 @@ rules_group_sessao = {
(sessao.ExpedienteSessao, __base__, __perms_publicas__),
(sessao.Orador, __base__, __perms_publicas__),
(sessao.OradorExpediente, __base__, __perms_publicas__),
(sessao.OradorOrdemDia, __base__, __perms_publicas__),
(sessao.OrdemDia, __base__, __perms_publicas__),
(sessao.PresencaOrdemDia, __base__, __perms_publicas__),
(sessao.RegistroVotacao, __base__, __perms_publicas__),

55
sapl/sessao/forms.py

@ -26,7 +26,7 @@ from sapl.utils import (RANGE_DIAS_MES, RANGE_MESES,
from .models import (Bancada, Bloco, ExpedienteMateria, JustificativaAusencia,
Orador, OradorExpediente, OrdemDia, PresencaOrdemDia, SessaoPlenaria,
SessaoPlenariaPresenca, TipoResultadoVotacao,
OcorrenciaSessao, RetiradaPauta, TipoRetiradaPauta)
OcorrenciaSessao, RetiradaPauta, TipoRetiradaPauta, OradorOrdemDia)
MES_CHOICES = RANGE_MESES
@ -45,7 +45,8 @@ ORDENACAO_RESUMO = [('cont_mult', 'Conteúdo Multimídia'),
('oradores_expli', 'Oradores das Explicações Pessoais'),
('ocorr_sessao', 'Ocorrências da Sessão'),
('v_n_mat_exp', 'Votações Nominais - Matérias do Expediente'),
('v_n_mat_o_d', 'Votações Nominais - Matérias da Ordem do Dia')]
('v_n_mat_o_d', 'Votações Nominais - Matérias da Ordem do Dia'),
('oradores_o_d', 'Oradores da Ordem do Dia')]
class SessaoPlenariaForm(FileFieldCheckMixin, ModelForm):
@ -758,6 +759,49 @@ class OradorExpedienteForm(ModelForm):
exclude = ['sessao_plenaria']
class OradorOrdemDiaForm(ModelForm):
def __init__(self, *args, **kwargs):
super(OradorOrdemDiaForm, self).__init__(*args, **kwargs)
id_sessao = int(self.initial['id_sessao'])
ids = [p.parlamentar.id for p in PresencaOrdemDia.objects.filter(
sessao_plenaria_id=id_sessao
)]
self.fields['parlamentar'].queryset = Parlamentar.objects.filter(
id__in=ids
).order_by('nome_parlamentar')
def clean(self):
super(OradorOrdemDiaForm, self).clean()
cleaned_data = self.cleaned_data
if not self.is_valid():
return self.cleaned_data
sessao_id = self.initial['id_sessao']
numero = self.initial.get('numero')
numero_ordem = cleaned_data['numero_ordem']
ordem = OradorOrdemDia.objects.filter(
sessao_plenaria_id=sessao_id,
numero_ordem=numero_ordem
).exists()
if ordem and numero_ordem != numero:
raise ValidationError(_(
"Já existe orador nesta posição de ordem de pronunciamento"
))
return self.cleaned_data
class Meta:
model = OradorOrdemDia
exclude = ['sessao_plenaria']
class PautaSessaoFilterSet(SessaoPlenariaFilterSet):
titulo = _('Pesquisa de Pauta de Sessão')
@ -789,6 +833,8 @@ class ResumoOrdenacaoForm(forms.Form):
choices=ORDENACAO_RESUMO)
decimo_terceiro = forms.ChoiceField(label='13°',
choices=ORDENACAO_RESUMO)
decimo_quarto = forms.ChoiceField(label='14°',
choices=ORDENACAO_RESUMO)
def __init__(self, *args, **kwargs):
super(ResumoOrdenacaoForm, self).__init__(*args, **kwargs)
@ -819,13 +865,16 @@ class ResumoOrdenacaoForm(forms.Form):
[('decimo_segundo', 12)])
row13 = to_row(
[('decimo_terceiro', 12)])
row14 = to_row(
[('decimo_quarto', 12)]
)
self.helper = SaplFormHelper()
self.helper.layout = Layout(
Fieldset(_(''),
row1, row2, row3, row4, row5,
row6, row7, row8, row9, row10,
row11, row12, row13,
row11, row12, row13, row14,
form_actions(label='Atualizar'))
)

34
sapl/sessao/migrations/0034_oradorordemdia.py

@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-03-26 16:14
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
import sapl.sessao.models
class Migration(migrations.Migration):
dependencies = [
('parlamentares', '0025_auto_20180924_1724'),
('sessao', '0033_auto_20190228_1803'),
]
operations = [
migrations.CreateModel(
name='OradorOrdemDia',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('numero_ordem', models.PositiveIntegerField(verbose_name='Ordem de pronunciamento')),
('url_discurso', models.URLField(blank=True, max_length=150, verbose_name='URL Vídeo')),
('observacao', models.CharField(blank=True, max_length=150, verbose_name='Observação')),
('upload_anexo', models.FileField(blank=True, null=True, upload_to=sapl.sessao.models.anexo_upload_path, verbose_name='Anexo do Orador')),
('parlamentar', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='parlamentares.Parlamentar', verbose_name='Parlamentar')),
('sessao_plenaria', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sessao.SessaoPlenaria')),
],
options={
'verbose_name_plural': 'Oradores da Ordem do Dia',
'verbose_name': 'Orador da Ordem do Dia',
},
),
]

20
sapl/sessao/migrations/0035_resumoordenacao_decimo_quarto.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-03-26 18:14
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('sessao', '0034_oradorordemdia'),
]
operations = [
migrations.AddField(
model_name='resumoordenacao',
name='decimo_quarto',
field=models.CharField(default='Oradores da Ordem do Dia', max_length=30),
),
]

9
sapl/sessao/models.py

@ -378,6 +378,14 @@ class OradorExpediente(AbstractOrador): # OradoresExpediente
verbose_name_plural = _('Oradores do Expediente')
@reversion.register()
class OradorOrdemDia(AbstractOrador): # OradoresOrdemDia
class Meta:
verbose_name = _('Orador da Ordem do Dia')
verbose_name_plural = _('Oradores da Ordem do Dia')
@reversion.register()
class OrdemDia(AbstractOrdemDia):
@ -579,6 +587,7 @@ class ResumoOrdenacao(models.Model):
decimo_primeiro = models.CharField(max_length=30,default="Ocorrências da Sessão")
decimo_segundo = models.CharField(max_length=30, default="Votos Nominais Mat Expediente")
decimo_terceiro = models.CharField(max_length=30, default="Votos Nominais Mat Ordem Dia")
decimo_quarto = models.CharField(max_length=30, default="Oradores da Ordem do Dia")
class Meta:
verbose_name = _('Ordenação do Resumo de uma Sessão')

7
sapl/sessao/urls.py

@ -4,7 +4,8 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
AdicionarVariasMateriasOrdemDia, BancadaCrud,
BlocoCrud, CargoBancadaCrud,
ExpedienteMateriaCrud, ExpedienteView, JustificativaAusenciaCrud,
OcorrenciaSessaoView, MateriaOrdemDiaCrud, MesaView, OradorCrud,
OcorrenciaSessaoView, MateriaOrdemDiaCrud, OradorOrdemDiaCrud,
MesaView, OradorCrud,
OradorExpedienteCrud, PainelView,
PautaSessaoDetailView, PautaSessaoView,
PesquisarPautaSessaoView,
@ -44,7 +45,9 @@ urlpatterns = [
OradorExpedienteCrud.get_urls() +
ExpedienteMateriaCrud.get_urls() +
JustificativaAusenciaCrud.get_urls() +
MateriaOrdemDiaCrud.get_urls() + RetiradaPautaCrud.get_urls())),
MateriaOrdemDiaCrud.get_urls() +
OradorOrdemDiaCrud.get_urls() +
RetiradaPautaCrud.get_urls())),
url(r'^sessao/(?P<pk>\d+)/mesa$', MesaView.as_view(), name='mesa'),

76
sapl/sessao/views.py

@ -42,14 +42,14 @@ from .forms import (AdicionarVariasMateriasFilterSet, BancadaForm, BlocoForm,
MesaForm, OradorExpedienteForm, OradorForm, PautaSessaoFilterSet,
PresencaForm, ResumoOrdenacaoForm, SessaoPlenariaFilterSet,
SessaoPlenariaForm, VotacaoEditForm, VotacaoForm,
VotacaoNominalForm, RetiradaPautaForm)
VotacaoNominalForm, RetiradaPautaForm, OradorOrdemDiaForm)
from .models import (Bancada, Bloco, CargoBancada, CargoMesa,
ExpedienteMateria, ExpedienteSessao, OcorrenciaSessao, IntegranteMesa,
MateriaLegislativa, Orador, OradorExpediente, OrdemDia,
PresencaOrdemDia, RegistroVotacao, ResumoOrdenacao,
SessaoPlenaria, SessaoPlenariaPresenca, TipoExpediente,
TipoResultadoVotacao, TipoSessaoPlenaria, VotoParlamentar, TipoRetiradaPauta,
RetiradaPauta, TipoJustificativa, JustificativaAusencia)
RetiradaPauta, TipoJustificativa, JustificativaAusencia, OradorOrdemDia)
TipoSessaoCrud = CrudAux.build(TipoSessaoPlenaria, 'tipo_sessao_plenaria')
@ -618,6 +618,31 @@ class OradorExpedienteCrud(OradorCrud):
'numero': self.object.numero_ordem}
class OradorOrdemDiaCrud(OradorCrud):
model = OradorOrdemDia
class CreateView(MasterDetailCrud.CreateView):
form_class = OradorOrdemDiaForm
def get_initial(self):
return {'id_sessao': self.kwargs['pk']}
def get_success_url(self):
return reverse('sapl.sessao:oradorordemdia_list',
kwargs={'pk': self.kwargs['pk']})
class UpdateView(MasterDetailCrud.UpdateView):
form_class = OradorOrdemDiaForm
def get_initial(self):
initial = super(UpdateView, self).get_initial()
initial.update({'id_sessao': self.object.sessao_plenaria.id})
initial.update({'numero': self.object.numero_ordem})
return initial
class OradorCrud(OradorCrud):
model = Orador
@ -1290,7 +1315,8 @@ class ResumoOrdenacaoView(PermissionRequiredMixin, FormView):
'decimo': ordenacao.decimo,
'decimo_primeiro': ordenacao.decimo_primeiro,
'decimo_segundo': ordenacao.decimo_segundo,
'decimo_terceiro': ordenacao.decimo_terceiro})
'decimo_terceiro': ordenacao.decimo_terceiro,
'decimo_quarto': ordenacao.decimo_quarto})
return initial
def form_valid(self, form):
@ -1309,6 +1335,7 @@ class ResumoOrdenacaoView(PermissionRequiredMixin, FormView):
ordenacao.decimo_primeiro = form.cleaned_data['decimo_primeiro']
ordenacao.decimo_segundo = form.cleaned_data['decimo_segundo']
ordenacao.decimo_terceiro = form.cleaned_data['decimo_terceiro']
ordenacao.decimo_quarto = form.cleaned_data['decimo_quarto']
ordenacao.save()
@ -1584,6 +1611,32 @@ def get_materias_ordem_do_dia(sessao_plenaria):
return context
def get_oradores_ordemdia(sessao_plenaria):
oradores = []
oradores_ordem_dia = OradorOrdemDia.objects.filter(
sessao_plenaria_id=sessao_plenaria.id
).order_by('numero_ordem')
for orador in oradores_ordem_dia:
numero_ordem = orador.numero_ordem
url_discurso = orador.url_discurso
observacao = orador.observacao
parlamentar = Parlamentar.objects.get(
id=orador.parlamentar_id
)
o = {
'numero_ordem': numero_ordem,
'url_discurso': url_discurso,
'parlamentar': parlamentar,
'observacao': observacao
}
oradores.append(o)
context = {'oradores_ordemdia': oradores}
return context
def get_oradores_explicações_pessoais(sessao_plenaria):
oradores_explicacoes = []
for orador in Orador.objects.filter(
@ -1698,6 +1751,9 @@ class ResumoView(DetailView):
context.update(get_materias_ordem_do_dia(self.object))
# =====================================================================
# Oradores Ordem do Dia
context.update(get_oradores_ordemdia(self.object))
# =====================================================================
# Oradores nas Explicações Pessoais
context.update(get_oradores_explicações_pessoais(self.object))
# =====================================================================
@ -1718,6 +1774,7 @@ class ResumoView(DetailView):
'v_n_mat_o_d': 'votos_nominais_materias_ordem_dia.html',
'mesa_d': 'mesa_diretora.html',
'oradores_exped': 'oradores_expediente.html',
'oradores_o_d': 'oradores_ordemdia.html',
'oradores_expli': 'oradores_explicacoes.html',
'ocorr_sessao': 'ocorrencias_da_sessao.html'
}
@ -1737,7 +1794,8 @@ class ResumoView(DetailView):
'decimo_ordenacao': dict_ord_template[ordenacao.decimo],
'decimo_primeiro_ordenacao': dict_ord_template[ordenacao.decimo_primeiro],
'decimo_segundo_ordenacao': dict_ord_template[ordenacao.decimo_segundo],
'decimo_terceiro_ordenacao': dict_ord_template[ordenacao.decimo_terceiro]})
'decimo_terceiro_ordenacao': dict_ord_template[ordenacao.decimo_terceiro],
'decimo_quarto_ordenacao': dict_ord_template[ordenacao.decimo_quarto]})
except KeyError as e:
self.logger.error('user=' + self.request.user.username + '. ' + "KeyError: " + str(e) + ". Erro "
"ao tentar utilizar configuração de ordenação. Utilizando ordenação padrão.")
@ -1753,8 +1811,9 @@ class ResumoView(DetailView):
'nono_ordenacao': dict_ord_template['lista_p_o_d'],
'decimo_ordenacao': dict_ord_template['mat_o_d'],
'decimo_primeiro_ordenacao': dict_ord_template['v_n_mat_o_d'],
'decimo_segundo_ordenacao': dict_ord_template['oradores_expli'],
'decimo_terceiro_ordenacao': dict_ord_template['ocorr_sessao']
'decimo_segundo_ordenacao': dict_ord_template['oradores_o_d'],
'decimo_terceiro_ordenacao': dict_ord_template['oradores_expli'],
'decimo_quarto_ordenacao': dict_ord_template['ocorr_sessao']
})
else:
context.update(
@ -1769,8 +1828,9 @@ class ResumoView(DetailView):
'nono_ordenacao': dict_ord_template['lista_p_o_d'],
'decimo_ordenacao': dict_ord_template['mat_o_d'],
'decimo_primeiro_ordenacao': dict_ord_template['v_n_mat_o_d'],
'decimo_segundo_ordenacao': dict_ord_template['oradores_expli'],
'decimo_terceiro_ordenacao': dict_ord_template['ocorr_sessao']
'decimo_segundo_ordenacao': dict_ord_template['oradores_o_d'],
'decimo_terceiro_ordenacao': dict_ord_template['oradores_expli'],
'decimo_quarto_ordenacao': dict_ord_template['ocorr_sessao']
})
return context

1
sapl/templates/relatorios/relatorio_ata.html

@ -46,6 +46,7 @@
{% include 'sessao/blocos_ata/oradores_expediente.html' %}
{% include 'sessao/blocos_ata/lista_presenca_ordem_dia.html' %}
{% include 'sessao/blocos_ata/materias_ordem_dia.html' %}
{% include 'sessao/blocos_ata/oradores_ordemdia.html' %}
{% include 'sessao/blocos_ata/oradores_explicacoes.html' %}
{% include 'sessao/blocos_ata/ocorrencias_da_sessao.html' %}

13
sapl/templates/sessao/blocos_ata/oradores_ordemdia.html

@ -0,0 +1,13 @@
<fieldset>
<p aling="justify">
{% if oradores_ordemdia %}
<strong>Oradores da Ordem do Dia: </strong>
{% for orador in oradores_ordemdia %}
<div><b>{{ orador.numero_ordem }}</b> - {{ orador.parlamentar.nome_completo }}</div>
<div>{{ orador.url_discurso }}</div>
<div>{{ orador.observacao }}</div>
</br>
{% endfor %}
{% endif %}
</p>
</fieldset>

15
sapl/templates/sessao/blocos_resumo/oradores_ordemdia.html

@ -0,0 +1,15 @@
<fieldset>
<legend>Oradores da Ordem do Dia</legend>
<div class="row">
<div class="col-md-4">Parlamentar</div>
<div class="col-md-4">Discurso</div>
<div class="col-md-4">Observação</div>
</div>
<div class="row">
{% for orador in oradores_ordemdia %}
<div class="col-md-4"><b>{{ orador.numero_ordem }}</b> - {{ orador.parlamentar }}</div>
<div class="col-md-4">{{ orador.url_discurso }}</div>
<div class="col-md-4">{{ orador.observacao }}</div>
{% endfor %}
</div>
</fieldset>

6
sapl/templates/sessao/layouts.yaml

@ -39,6 +39,12 @@ OradorExpediente:
- url_discurso observacao
- upload_anexo
OradorOrdemDia:
{% trans 'Orador da Ordem do Dia' %}:
- numero_ordem parlamentar
- url_discurso observacao
- upload_anexo
ExpedienteMateria:
{% trans 'Matéria do Expediente' %}:
- data_ordem numero_ordem

3
sapl/templates/sessao/resumo.html

@ -58,5 +58,8 @@
{% include 'sessao/blocos_resumo/'|add:decimo_terceiro_ordenacao %}
<br /><br /><br />
{% include 'sessao/blocos_resumo/'|add:decimo_quarto_ordenacao %}
<br /><br /><br />
{% endblock detail_content %}

1
sapl/templates/sessao/resumo_ata.html

@ -32,5 +32,6 @@
{% include 'sessao/blocos_ata/'|add:decimo_primeiro_ordenacao %}
{% include 'sessao/blocos_ata/'|add:decimo_segundo_ordenacao %}
{% include 'sessao/blocos_ata/'|add:decimo_terceiro_ordenacao %}
{% include 'sessao/blocos_ata/'|add:decimo_quarto_ordenacao %}
{% include 'sessao/blocos_ata/assinaturas.html' %}
{% endblock detail_content %}

2
sapl/templates/sessao/subnav.yaml

@ -35,6 +35,8 @@
url: ordemdia_list
- title: {% trans 'Presença Ordem do Dia' %}
url: presencaordemdia
- title: {% trans 'Oradores da Ordem do Dia' %}
url: oradorordemdia_list
- title: {% trans 'Votação em Bloco' %}
url: votacao_bloco_ordemdia
check_permission: sessao.add_sessaoplenaria

Loading…
Cancel
Save