From ea4490f811bc2eb55349bae9f2b0fe5c2c873cee Mon Sep 17 00:00:00 2001 From: AlGouvea Date: Thu, 5 Aug 2021 10:02:35 -0300 Subject: [PATCH 1/9] Adicionada classe de ConsideracoesFinais --- sapl/sessao/models.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/sapl/sessao/models.py b/sapl/sessao/models.py index 47019abdb..198132f4e 100644 --- a/sapl/sessao/models.py +++ b/sapl/sessao/models.py @@ -426,6 +426,21 @@ class OcorrenciaSessao(models.Model): # OcorrenciaSessaoPlenaria def __str__(self): return '%s - %s' % (self.sessao_plenaria, self.conteudo) +@reversion.register() +class ConsideracoesFinais(models.Model): # ConsideracoesFinaisSessaoPlenaria + sessao_plenaria = models.OneToOneField(SessaoPlenaria, + on_delete=models.PROTECT) + conteudo = models.TextField( + blank=True, verbose_name=_('Considerações Finais da Sessão Plenária')) + + class Meta: + verbose_name = _('Consideração Final da Sessão Plenária') + verbose_name_plural = _('Considerações Finais da Sessão Plenária') + ordering = ('id',) + + def __str__(self): + return '%s - %s' % (self.sessao_plenaria, self.conteudo) + @reversion.register() class IntegranteMesa(models.Model): # MesaSessaoPlenaria From 603d06df1f1f567453176d38810551ef7f6252d4 Mon Sep 17 00:00:00 2001 From: AlGouvea Date: Thu, 5 Aug 2021 10:06:28 -0300 Subject: [PATCH 2/9] Migration de ConsideracoesFinais --- .../migrations/0056_ConsideracoesFinais.py | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 sapl/sessao/migrations/0056_ConsideracoesFinais.py diff --git a/sapl/sessao/migrations/0056_ConsideracoesFinais.py b/sapl/sessao/migrations/0056_ConsideracoesFinais.py new file mode 100644 index 000000000..bda571b08 --- /dev/null +++ b/sapl/sessao/migrations/0056_ConsideracoesFinais.py @@ -0,0 +1,27 @@ +# Generated by Django 2.2.20 on 2021-08-05 13:04 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('sessao', '0055_auto_20210304_1221'), + ] + + operations = [ + migrations.CreateModel( + name='ConsideracoesFinais', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('conteudo', models.TextField(blank=True, verbose_name='Considerações Finais da Sessão Plenária')), + ('sessao_plenaria', models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, to='sessao.SessaoPlenaria')), + ], + options={ + 'verbose_name': 'Consideração Final da Sessão Plenária', + 'verbose_name_plural': 'Considerações Finais da Sessão Plenária', + 'ordering': ('id',), + }, + ), + ] From 35dcb5419a532bc8b3abcc1811c3530dbd2b2d79 Mon Sep 17 00:00:00 2001 From: AlGouvea Date: Mon, 9 Aug 2021 10:40:46 -0300 Subject: [PATCH 3/9] Adicionado interface visual para ConsideracoesFinais --- sapl/relatorios/views.py | 1 + sapl/sessao/urls.py | 4 +- sapl/sessao/views.py | 75 ++++++++++++++++++- .../sessao/consideracoes_finais.html | 29 +++++++ sapl/templates/sessao/subnav-solene.yaml | 2 + sapl/templates/sessao/subnav.yaml | 2 + 6 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 sapl/templates/sessao/consideracoes_finais.html diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index 5b8173178..b2bc489d0 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -1327,6 +1327,7 @@ def resumo_ata_pdf(request, pk): context.update(get_materias_ordem_do_dia(sessao_plenaria)) context.update(get_oradores_ordemdia(sessao_plenaria)) context.update(get_ocorrencias_da_sessao(sessao_plenaria)) + context.update(get_consideracoes_finais(sessao_plenaria)) context.update(get_oradores_explicacoes_pessoais(sessao_plenaria)) context.update(get_assinaturas(sessao_plenaria)) context.update({'object': sessao_plenaria}) diff --git a/sapl/sessao/urls.py b/sapl/sessao/urls.py index 2630e6515..af66c2d83 100644 --- a/sapl/sessao/urls.py +++ b/sapl/sessao/urls.py @@ -4,7 +4,7 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente, AdicionarVariasMateriasOrdemDia, BancadaCrud, CargoBancadaCrud, ExpedienteMateriaCrud, ExpedienteView, JustificativaAusenciaCrud, - OcorrenciaSessaoView, MateriaOrdemDiaCrud, OradorOrdemDiaCrud, + OcorrenciaSessaoView, ConsideracoesFinaisView, MateriaOrdemDiaCrud, OradorOrdemDiaCrud, MesaView, OradorCrud, OradorExpedienteCrud, PainelView, PautaSessaoDetailView, PautaSessaoView, @@ -128,6 +128,8 @@ urlpatterns = [ ExpedienteView.as_view(), name='expediente'), url(r'^sessao/(?P\d+)/ocorrencia_sessao$', OcorrenciaSessaoView.as_view(), name='ocorrencia_sessao'), + url(r'^sessao/(?P\d+)/consideracoes_finais$', + ConsideracoesFinaisView.as_view(), name='consideracoes_finais'), url(r'^sessao/(?P\d+)/presenca$', PresencaView.as_view(), name='presenca'), url(r'^sessao/(?P\d+)/painel$', diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 2a3e814d3..083e9076e 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -44,7 +44,7 @@ from .forms import (AdicionarVariasMateriasFilterSet, BancadaForm, SessaoPlenariaForm, VotacaoEditForm, VotacaoForm, VotacaoNominalForm, RetiradaPautaForm, OradorOrdemDiaForm) from .models import (Bancada, CargoBancada, CargoMesa, - ExpedienteMateria, ExpedienteSessao, OcorrenciaSessao, IntegranteMesa, + ExpedienteMateria, ExpedienteSessao, OcorrenciaSessao, ConsideracoesFinais, IntegranteMesa, MateriaLegislativa, Orador, OradorExpediente, OrdemDia, PresencaOrdemDia, RegistroVotacao, ResumoOrdenacao, SessaoPlenaria, SessaoPlenariaPresenca, TipoExpediente, @@ -2186,6 +2186,12 @@ def get_ocorrencias_da_sessao(sessao_plenaria): context = {'ocorrencias_da_sessao': ocorrencias_sessao} return context +def get_consideracoes_finais(sessao_plenaria): + consideracoes_finais = ConsideracoesFinais.objects.filter( + sessao_plenaria_id=sessao_plenaria.id) + context = {'consideracoes_finais': consideracoes_finais} + return context + class ResumoView(DetailView): template_name = 'sessao/resumo.html' @@ -2271,6 +2277,9 @@ class ResumoView(DetailView): # Ocorrẽncias da Sessão context.update(get_ocorrencias_da_sessao(self.object)) # ===================================================================== + # Ocorrẽncias da Sessão + context.update(get_consideracoes_finais(self.object)) + # ===================================================================== # Indica a ordem com a qual o template será renderizado dict_ord_template = { 'cont_mult': 'conteudo_multimidia.html', @@ -2502,6 +2511,70 @@ class OcorrenciaSessaoView(FormMixin, DetailView): pk = self.kwargs['pk'] return reverse('sapl.sessao:ocorrencia_sessao', kwargs={'pk': pk}) +class ConsideracoesFinaisView(FormMixin, DetailView): + template_name = 'sessao/consideracoes_finais.html' + form_class = OcorrenciaSessaoForm + model = SessaoPlenaria + + logger = logging.getLogger(__name__) + + def get_context_data(self, **kwargs): + context = FormMixin.get_context_data(self, **kwargs) + context['title'] = 'Considerações Finais (%s)' % ( + self.object) + sessao = context['object'] + tipo_sessao = sessao.tipo + if tipo_sessao.nome == "Solene": + context.update( + {'subnav_template_name': 'sessao/subnav-solene.yaml'}) + return context + + def delete(self): + ConsideracoesFinais.objects.filter(sessao_plenaria=self.object).delete() + + username = self.request.user.username + self.logger.info('user=' + username + '. ConsideracoesFinais com SessaoPlenaria de id={} deletada.' + .format(self.object.id)) + + msg = _('Registro deletado com sucesso') + messages.add_message(self.request, messages.SUCCESS, msg) + + def save(self, form): + conteudo = form.cleaned_data['conteudo'] + + ConsideracoesFinais.objects.filter(sessao_plenaria=self.object).delete() + + consideracao = ConsideracoesFinais() + consideracao.sessao_plenaria_id = self.object.id + consideracao.conteudo = conteudo + consideracao.save() + + msg = _('Registro salvo com sucesso') + messages.add_message(self.request, messages.SUCCESS, msg) + + username = self.request.user.username + self.logger.info( + 'user=' + username + '. consideracoesFinais de sessao_plenaria_id={} atualizada com sucesso.'.format(self.object.id)) + + @method_decorator(permission_required('sessao.add_consideraoesfinais')) + def post(self, request, *args, **kwargs): + self.object = self.get_object() + form = OcorrenciaSessaoForm(request.POST) + + if not form.is_valid(): + return self.form_invalid(form) + + if request.POST.get('delete'): + self.delete() + + elif request.POST.get('save'): + self.save(form) + + return self.form_valid(form) + + def get_success_url(self): + pk = self.kwargs['pk'] + return reverse('sapl.sessao:consideracoes_finais', kwargs={'pk': pk}) class VotacaoEditView(SessaoPermissionMixin): diff --git a/sapl/templates/sessao/consideracoes_finais.html b/sapl/templates/sessao/consideracoes_finais.html new file mode 100644 index 000000000..6e19bcee0 --- /dev/null +++ b/sapl/templates/sessao/consideracoes_finais.html @@ -0,0 +1,29 @@ +{% extends "crud/detail.html" %} +{% load i18n %} +{% load crispy_forms_tags %} +{% load common_tags %} + +{% block actions %}{% endblock %} +{% block detail_content %} + {% if perms|get_add_perm:view %} +
+ {% csrf_token %} +
+ +
+ + +
+ {% else %} + {{object.consideracoesfinais.conteudo|safe}} + {% endif %} +{% endblock detail_content %} + + +{% block extra_js %} + {% if perms|get_add_perm:view %} + + {% endif %} +{% endblock %} \ No newline at end of file diff --git a/sapl/templates/sessao/subnav-solene.yaml b/sapl/templates/sessao/subnav-solene.yaml index 34f381005..deef59805 100644 --- a/sapl/templates/sessao/subnav-solene.yaml +++ b/sapl/templates/sessao/subnav-solene.yaml @@ -12,6 +12,8 @@ url: orador_list - title: {% trans 'Ocorrências da Sessão' %} url: ocorrencia_sessao + - title: {% trans 'Considerações Finais' %} + url: consideracoes_finais - title: {% trans 'Expedientes' %} children: diff --git a/sapl/templates/sessao/subnav.yaml b/sapl/templates/sessao/subnav.yaml index b36e6b9ef..b868e5a88 100644 --- a/sapl/templates/sessao/subnav.yaml +++ b/sapl/templates/sessao/subnav.yaml @@ -14,6 +14,8 @@ url: orador_list - title: {% trans 'Ocorrências da Sessão' %} url: ocorrencia_sessao + - title: {% trans 'Considerações Finais' %} + url: consideracoes_finais - title: {% trans 'Retirada de Pauta'%} url: retiradapauta_list From e00c7a582281814317ee5137d686c42f5a1655bf Mon Sep 17 00:00:00 2001 From: AlGouvea Date: Wed, 11 Aug 2021 10:36:10 -0300 Subject: [PATCH 4/9] =?UTF-8?q?Migration=20de=20adi=C3=A7=C3=A3o=20di=20de?= =?UTF-8?q?cimo=5Fquinta=5Fordenacao=20em=20resumoordenacao?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0057_resumoordenacao_decimo_quinto.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 sapl/sessao/migrations/0057_resumoordenacao_decimo_quinto.py diff --git a/sapl/sessao/migrations/0057_resumoordenacao_decimo_quinto.py b/sapl/sessao/migrations/0057_resumoordenacao_decimo_quinto.py new file mode 100644 index 000000000..add1ebf57 --- /dev/null +++ b/sapl/sessao/migrations/0057_resumoordenacao_decimo_quinto.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.20 on 2021-08-11 13:23 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sessao', '0056_ConsideracoesFinais'), + ] + + operations = [ + migrations.AddField( + model_name='resumoordenacao', + name='decimo_quinto', + field=models.CharField(default='cons_finais', max_length=50), + ), + ] From aeb6dcfacaca202361559fd6226c7525423a312e Mon Sep 17 00:00:00 2001 From: AlGouvea Date: Wed, 11 Aug 2021 10:36:58 -0300 Subject: [PATCH 5/9] =?UTF-8?q?Altera=C3=A7=C3=B5es=20para=20disponibiliza?= =?UTF-8?q?r=20ConsideracoesFinais=20nas=20abas=20de=20resumo=20e=20resumo?= =?UTF-8?q?=20ata?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/relatorios/views.py | 3 ++- sapl/sessao/models.py | 7 ++++++- sapl/sessao/views.py | 11 +++++++---- .../sessao/blocos_ata/consideracoes_finais.html | 8 ++++++++ .../sessao/blocos_resumo/consideracoes_finais.html | 9 +++++++++ sapl/templates/sessao/resumo.html | 3 +++ sapl/templates/sessao/resumo_ata.html | 1 + 7 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 sapl/templates/sessao/blocos_ata/consideracoes_finais.html create mode 100644 sapl/templates/sessao/blocos_resumo/consideracoes_finais.html diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index b2bc489d0..f783e5a02 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -25,7 +25,8 @@ from sapl.sessao.models import (ExpedienteMateria, ExpedienteSessao, Orador, OradorExpediente, OrdemDia, PresencaOrdemDia, SessaoPlenaria, SessaoPlenariaPresenca, OcorrenciaSessao, - RegistroVotacao, VotoParlamentar, OradorOrdemDia, TipoExpediente, ResumoOrdenacao) + RegistroVotacao, VotoParlamentar, OradorOrdemDia, + ConsideracoesFinais, TipoExpediente, ResumoOrdenacao) from sapl.settings import STATIC_ROOT from sapl.utils import LISTA_DE_UFS, TrocaTag, filiacao_data, create_barcode diff --git a/sapl/sessao/models.py b/sapl/sessao/models.py index 198132f4e..26463fa19 100644 --- a/sapl/sessao/models.py +++ b/sapl/sessao/models.py @@ -701,7 +701,8 @@ ORDENACAO_RESUMO = [ ('v_n_mat_o_d', 'Votações Nominais - Matérias da Ordem do Dia'), ('oradores_o_d', 'Oradores da Ordem do Dia'), ('oradores_expli', 'Oradores das Explicações Pessoais'), - ('ocorr_sessao', 'Ocorrências da Sessão') + ('ocorr_sessao', 'Ocorrências da Sessão'), + ('cons_finais', 'Considerações Finais') ] @@ -767,6 +768,10 @@ class ResumoOrdenacao(models.Model): max_length=50, default=ORDENACAO_RESUMO[13][0] ) + decimo_quinto = models.CharField( + max_length=50, + default=ORDENACAO_RESUMO[14][0] + ) class Meta: verbose_name = _('Ordenação do Resumo de uma Sessão') diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 083e9076e..4116d9337 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -2277,7 +2277,7 @@ class ResumoView(DetailView): # Ocorrẽncias da Sessão context.update(get_ocorrencias_da_sessao(self.object)) # ===================================================================== - # Ocorrẽncias da Sessão + # Consideracoes Finais da Sessão context.update(get_consideracoes_finais(self.object)) # ===================================================================== # Indica a ordem com a qual o template será renderizado @@ -2295,7 +2295,8 @@ class ResumoView(DetailView): 'oradores_exped': 'oradores_expediente.html', 'oradores_o_d': 'oradores_ordemdia.html', 'oradores_expli': 'oradores_explicacoes.html', - 'ocorr_sessao': 'ocorrencias_da_sessao.html' + 'ocorr_sessao': 'ocorrencias_da_sessao.html', + 'cons_finais': 'consideracoes_finais.html' } ordenacao = ResumoOrdenacao.objects.get_or_create()[0] @@ -2314,7 +2315,8 @@ class ResumoView(DetailView): '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_quarto_ordenacao': dict_ord_template[ordenacao.decimo_quarto] + 'decimo_quarto_ordenacao': dict_ord_template[ordenacao.decimo_quarto], + 'decimo_quinto_ordenacao': dict_ord_template[ordenacao.decimo_quinto] }) except KeyError as e: self.logger.error("KeyError: " + str(e) + ". Erro ao tentar utilizar " @@ -2333,7 +2335,8 @@ class ResumoView(DetailView): 'decimo_primeiro_ordenacao': 'votos_nominais_materias_ordem_dia.html', 'decimo_segundo_ordenacao': 'oradores_ordemdia.html', 'decimo_terceiro_ordenacao': 'oradores_explicacoes.html', - 'decimo_quarto_ordenacao': 'ocorrencias_da_sessao.html' + 'decimo_quarto_ordenacao': 'ocorrencias_da_sessao.html', + 'decimo_quinto_ordenacao': 'consideracoes_finais.html' }) sessao = context['object'] diff --git a/sapl/templates/sessao/blocos_ata/consideracoes_finais.html b/sapl/templates/sessao/blocos_ata/consideracoes_finais.html new file mode 100644 index 000000000..e4377671d --- /dev/null +++ b/sapl/templates/sessao/blocos_ata/consideracoes_finais.html @@ -0,0 +1,8 @@ +
+

+ {% if object.consideracoesfinais.conteudo %} + Considerações Finais: + {{object.consideracoesfinais.conteudo|striptags|safe}} + {% endif %} +

+
diff --git a/sapl/templates/sessao/blocos_resumo/consideracoes_finais.html b/sapl/templates/sessao/blocos_resumo/consideracoes_finais.html new file mode 100644 index 000000000..f7b15c1f1 --- /dev/null +++ b/sapl/templates/sessao/blocos_resumo/consideracoes_finais.html @@ -0,0 +1,9 @@ +{% if object.consideracoesfinais.conteudo %} +
+ Considerações Finais +
+

{{object.consideracoesfinais.conteudo|safe}}

+
+
+


+{% endif %} \ No newline at end of file diff --git a/sapl/templates/sessao/resumo.html b/sapl/templates/sessao/resumo.html index ae76f6a5e..539cec810 100644 --- a/sapl/templates/sessao/resumo.html +++ b/sapl/templates/sessao/resumo.html @@ -49,5 +49,8 @@ {% include 'sessao/blocos_resumo/'|add:decimo_terceiro_ordenacao %} {% include 'sessao/blocos_resumo/'|add:decimo_quarto_ordenacao %} + + {% include 'sessao/blocos_resumo/'|add:decimo_quinto_ordenacao %} + {% endblock detail_content %} diff --git a/sapl/templates/sessao/resumo_ata.html b/sapl/templates/sessao/resumo_ata.html index 54c998209..6b4b224b6 100644 --- a/sapl/templates/sessao/resumo_ata.html +++ b/sapl/templates/sessao/resumo_ata.html @@ -33,5 +33,6 @@ {% 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/'|add:decimo_quinto_ordenacao %} {% include 'sessao/blocos_ata/assinaturas.html' %} {% endblock detail_content %} From 2ec3eb5705e9025c16e31d5837ef87957db560b0 Mon Sep 17 00:00:00 2001 From: AlGouvea Date: Wed, 11 Aug 2021 10:45:37 -0300 Subject: [PATCH 6/9] Adicionado o import de get_consideracoes_finais --- sapl/relatorios/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index f783e5a02..706eb32b4 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -35,7 +35,7 @@ from sapl.sessao.views import (get_identificacao_basica, get_mesa_diretora, get_materias_expediente, get_oradores_expediente, get_presenca_ordem_do_dia, get_materias_ordem_do_dia, get_oradores_ordemdia, - get_oradores_explicacoes_pessoais, get_ocorrencias_da_sessao, get_assinaturas) + get_oradores_explicacoes_pessoais, get_consideracoes_finais, get_ocorrencias_da_sessao, get_assinaturas) from .templates import (pdf_capa_processo_gerar, pdf_documento_administrativo_gerar, pdf_espelho_gerar, From 3983262b5f4c8033d6a6be1b26101f0bc4e5f95d Mon Sep 17 00:00:00 2001 From: AlGouvea Date: Wed, 11 Aug 2021 11:56:48 -0300 Subject: [PATCH 7/9] Adicionado consideracoes finais a outras abas --- .../templates/pdf_sessao_plenaria_gerar.py | 23 +++++++++- .../pdf_sessao_plenaria_preparar_pysc.py | 2 +- sapl/relatorios/views.py | 45 +++++++++++++++---- sapl/sessao/forms.py | 8 ++++ sapl/sessao/views.py | 5 ++- .../consideracoes_finais.html | 4 ++ sapl/templates/relatorios/relatorio_ata.html | 1 + .../relatorios/relatorio_sessao_plenaria.html | 2 + .../blocos_resumo/ocorrencias_da_sessao.html | 1 + ...sessao.html => ocorrencias_da_sessao.html} | 0 10 files changed, 78 insertions(+), 13 deletions(-) create mode 100644 sapl/templates/relatorios/blocos_sessao_plenaria/consideracoes_finais.html rename sapl/templates/sessao/{ocorrencia_sessao.html => ocorrencias_da_sessao.html} (100%) diff --git a/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py b/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py index 0ede61f97..5d3f259b0 100644 --- a/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py +++ b/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py @@ -399,8 +399,23 @@ def ocorrencias(lst_ocorrencias): tmp += '\t\t\n' return tmp +def consideracoes(lst_consideracoes): + tmp = '' + if lst_consideracoes: + tmp += '\t\tConsideracoes Finais\n' + tmp += '\t\t\n' + tmp += '\t\t\t \n' + tmp += '\t\t\n' + for consideracoes in lst_consideracoes: + tmp += '\t\t' + \ + str(consideracoes.conteudo) + '\n' + tmp += '\t\t\n' + tmp += '\t\t\t \n' + tmp += '\t\t\n' + return tmp + -def principal(rodape_dic, imagem, inf_basicas_dic, cont_mult_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): +def principal(rodape_dic, imagem, inf_basicas_dic, cont_mult_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, lst_consideracoes): """ """ arquivoPdf = str(int(time.time() * 100)) + ".pdf" @@ -437,7 +452,8 @@ def principal(rodape_dic, imagem, inf_basicas_dic, cont_mult_dic, lst_mesa, lst_ '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) + 'ocorr_sessao': ocorrencias(lst_ocorrencias), + 'cons_finais': consideracoes(lst_consideracoes) } if ordenacao: @@ -456,6 +472,7 @@ def principal(rodape_dic, imagem, inf_basicas_dic, cont_mult_dic, lst_mesa, lst_ tmp += dict_ord_template[ordenacao.decimo_segundo] tmp += dict_ord_template[ordenacao.decimo_terceiro] tmp += dict_ord_template[ordenacao.decimo_quarto] + tmp += dict_ord_template[ordenacao.decimo_quinto] except KeyError as e: logger.error("KeyError: " + str(e) + ". Erro ao tentar utilizar " "configuração de ordenação. Utilizando ordenação padrão.") @@ -473,6 +490,7 @@ def principal(rodape_dic, imagem, inf_basicas_dic, cont_mult_dic, lst_mesa, lst_ tmp += oradores_ordemdia(lst_oradores_ordemdia) tmp += oradores(lst_oradores) tmp += ocorrencias(lst_ocorrencias) + tmp += consideracoes(lst_consideracoes) else: tmp += inf_basicas(inf_basicas_dic) @@ -489,6 +507,7 @@ def principal(rodape_dic, imagem, inf_basicas_dic, cont_mult_dic, lst_mesa, lst_ tmp += oradores_ordemdia(lst_oradores_ordemdia) tmp += oradores(lst_oradores) tmp += ocorrencias(lst_ocorrencias) + tmp += consideracoes(lst_consideracoes) tmp += '\t\n' tmp += '\n' diff --git a/sapl/relatorios/templates/pdf_sessao_plenaria_preparar_pysc.py b/sapl/relatorios/templates/pdf_sessao_plenaria_preparar_pysc.py index 5eef2d912..710d2ef61 100644 --- a/sapl/relatorios/templates/pdf_sessao_plenaria_preparar_pysc.py +++ b/sapl/relatorios/templates/pdf_sessao_plenaria_preparar_pysc.py @@ -277,7 +277,7 @@ if context.REQUEST['data'] != '': # return lst_votacao sessao = session.id caminho = context.pdf_sessao_plenaria_gerar(rodape, sessao, imagem, inf_basicas_dic, lst_mesa, lst_presenca_sessao, - lst_expedientes, lst_expediente_materia, lst_oradores_expediente, lst_presenca_ordem_dia, lst_votacao, lst_oradores) + lst_expedientes, lst_expediente_materia, lst_oradores_expediente, lst_presenca_ordem_dia, lst_votacao, lst_oradores, lst_consideracoes) if caminho == 'aviso': response.redirect('mensagem_emitir_proc') else: diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index 706eb32b4..8ae7bba97 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -35,7 +35,8 @@ from sapl.sessao.views import (get_identificacao_basica, get_mesa_diretora, get_materias_expediente, get_oradores_expediente, get_presenca_ordem_do_dia, get_materias_ordem_do_dia, get_oradores_ordemdia, - get_oradores_explicacoes_pessoais, get_consideracoes_finais, get_ocorrencias_da_sessao, get_assinaturas) + get_oradores_explicacoes_pessoais, get_consideracoes_finais, + get_ocorrencias_da_sessao, get_assinaturas) from .templates import (pdf_capa_processo_gerar, pdf_documento_administrativo_gerar, pdf_espelho_gerar, @@ -848,6 +849,26 @@ def get_sessao_plenaria(sessao, casa): lst_ocorrencias.append(o) + # Ocorrências da Sessão + lst_consideracoes = [] + consideracoes = OcorrenciaSessao.objects.filter(sessao_plenaria=sessao) + + for c in consideracoes: + conteudo = c.conteudo + + # unescape HTML codes + # https://github.com/interlegis/sapl/issues/1046 + conteudo = re.sub('style=".*?"', '', conteudo) + conteudo = html.unescape(conteudo) + + # escape special character '&' + # https://github.com/interlegis/sapl/issues/1009 + conteudo = conteudo.replace('&', '&') + + c.conteudo = conteudo + + lst_consideracoes.append(o) + return (inf_basicas_dic, cont_mult_dic, lst_mesa, @@ -862,7 +883,8 @@ def get_sessao_plenaria(sessao, casa): lst_votacao_vot_nom, lst_oradores_ordemdia, lst_oradores, - lst_ocorrencias) + lst_ocorrencias, + lst_consideracoes) def get_turno(materia): @@ -924,7 +946,8 @@ def relatorio_sessao_plenaria(request, pk): lst_votacao_vot_nom, lst_oradores_ordemdia, lst_oradores, - lst_ocorrencias) = get_sessao_plenaria(sessao, casa) + lst_ocorrencias, + lst_consideracoes) = get_sessao_plenaria(sessao, casa) for idx in range(len(lst_expedientes)): txt_expedientes = lst_expedientes[idx]['txt_expediente'] @@ -949,7 +972,8 @@ def relatorio_sessao_plenaria(request, pk): lst_votacao_vot_nom, lst_oradores_ordemdia, lst_oradores, - lst_ocorrencias) + lst_ocorrencias, + lst_consideracoes) response.write(pdf) return response @@ -1482,7 +1506,8 @@ def relatorio_sessao_plenaria_pdf(request, pk): lst_votacao_vot_nom, lst_oradores_ordemdia, lst_oradores, - lst_ocorrencias) = get_sessao_plenaria(sessao, casa) + lst_ocorrencias, + lst_consideracoes) = get_sessao_plenaria(sessao, casa) dict_ord_template = { 'cont_mult': 'conteudo_multimidia.html', @@ -1498,7 +1523,8 @@ def relatorio_sessao_plenaria_pdf(request, pk): 'oradores_exped': 'oradores_expediente.html', 'oradores_o_d': 'oradores_ordemdia.html', 'oradores_expli': 'oradores_explicacoes.html', - 'ocorr_sessao': 'ocorrencias_sessao.html' + 'ocorr_sessao': 'ocorrencias_da_sessao.html', + 'cons_finais': 'consideracoes_finais.html' } context = { @@ -1517,6 +1543,7 @@ def relatorio_sessao_plenaria_pdf(request, pk): "lst_votacao_vot_nom": lst_votacao_vot_nom, "lst_oradores": lst_oradores, "lst_ocorrencias": lst_ocorrencias, + "lst_consideracoes": lst_consideracoes, "rodape": rodape, "data": dt.today().strftime('%d/%m/%Y') } @@ -1537,7 +1564,8 @@ def relatorio_sessao_plenaria_pdf(request, pk): '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_quarto_ordenacao': dict_ord_template[ordenacao.decimo_quarto] + 'decimo_quarto_ordenacao': dict_ord_template[ordenacao.decimo_quarto], + 'decimo_quinto_ordenacao': dict_ord_template[ordenacao.decimo_quinto] }) except KeyError as e: # self.logger.error("KeyError: " + str(e) + ". Erro ao tentar utilizar " @@ -1556,7 +1584,8 @@ def relatorio_sessao_plenaria_pdf(request, pk): 'decimo_primeiro_ordenacao': 'votos_nominais_ordemdia.html', 'decimo_segundo_ordenacao': 'oradores_ordemdia.html', 'decimo_terceiro_ordenacao': 'oradores_explicacoes.html', - 'decimo_quarto_ordenacao': 'ocorrencias_sessao.html' + 'decimo_quarto_ordenacao': 'ocorrencias_da_sessao.html', + 'decimo_quinto_ordenacao': 'consideracoes_finais.html' }) html_template = render_to_string( diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py index 09eb3515d..303495900 100644 --- a/sapl/sessao/forms.py +++ b/sapl/sessao/forms.py @@ -783,6 +783,10 @@ class ResumoOrdenacaoForm(forms.Form): label='14°', choices=ORDENACAO_RESUMO ) + decimo_quinto = forms.ChoiceField( + label='14°', + choices=ORDENACAO_RESUMO + ) def __init__(self, *args, **kwargs): row1 = to_row( @@ -814,6 +818,9 @@ class ResumoOrdenacaoForm(forms.Form): row14 = to_row( [('decimo_quarto', 12)] ) + row15 = to_row( + [('decimo_quinto', 12)] + ) self.helper = SaplFormHelper() self.helper.layout = Layout( @@ -862,6 +869,7 @@ class ResumoOrdenacaoForm(forms.Form): ordenacao.decimo_segundo = cleaned_data['decimo_segundo'] ordenacao.decimo_terceiro = cleaned_data['decimo_terceiro'] ordenacao.decimo_quarto = cleaned_data['decimo_quarto'] + ordenacao.decimo_quinto = cleaned_data['decimo_quinto'] ordenacao.save() diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 4116d9337..b89797d19 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -1843,7 +1843,8 @@ class ResumoOrdenacaoView(PermissionRequiredMixin, FormView): 'decimo_primeiro': self.get_tupla(ordenacao.decimo_primeiro), 'decimo_segundo': self.get_tupla(ordenacao.decimo_segundo), 'decimo_terceiro': self.get_tupla(ordenacao.decimo_terceiro), - 'decimo_quarto': self.get_tupla(ordenacao.decimo_quarto) + 'decimo_quarto': self.get_tupla(ordenacao.decimo_quarto), + 'decimo_quinto': self.get_tupla(ordenacao.decimo_quinto) } return initial @@ -2450,7 +2451,7 @@ class ExpedienteView(FormMixin, DetailView): class OcorrenciaSessaoView(FormMixin, DetailView): - template_name = 'sessao/ocorrencia_sessao.html' + template_name = 'sessao/ocorrencias_da_sessao.html' form_class = OcorrenciaSessaoForm model = SessaoPlenaria diff --git a/sapl/templates/relatorios/blocos_sessao_plenaria/consideracoes_finais.html b/sapl/templates/relatorios/blocos_sessao_plenaria/consideracoes_finais.html new file mode 100644 index 000000000..023871063 --- /dev/null +++ b/sapl/templates/relatorios/blocos_sessao_plenaria/consideracoes_finais.html @@ -0,0 +1,4 @@ +

Considerações Finais

+ {% for c in lst_consideracoes%} +

{{c}}

+ {% endfor %} diff --git a/sapl/templates/relatorios/relatorio_ata.html b/sapl/templates/relatorios/relatorio_ata.html index c78e471d7..d4453b985 100644 --- a/sapl/templates/relatorios/relatorio_ata.html +++ b/sapl/templates/relatorios/relatorio_ata.html @@ -14,6 +14,7 @@ {% include 'sessao/blocos_ata/oradores_ordemdia.html' %} {% include 'sessao/blocos_ata/oradores_explicacoes.html' %} {% include 'sessao/blocos_ata/ocorrencias_da_sessao.html' %} + {% include 'sessao/blocos_ata/consideracoes_finais.html' %} {% if assinatura_mesa or assinatura_presentes %} diff --git a/sapl/templates/relatorios/relatorio_sessao_plenaria.html b/sapl/templates/relatorios/relatorio_sessao_plenaria.html index 4db5d298b..e459da2b3 100644 --- a/sapl/templates/relatorios/relatorio_sessao_plenaria.html +++ b/sapl/templates/relatorios/relatorio_sessao_plenaria.html @@ -32,6 +32,8 @@ {% include 'relatorios/blocos_sessao_plenaria/'|add:decimo_quarto_ordenacao %} + {% include 'relatorios/blocos_sessao_plenaria/'|add:decimo_quinto_ordenacao %} + diff --git a/sapl/templates/sessao/blocos_resumo/ocorrencias_da_sessao.html b/sapl/templates/sessao/blocos_resumo/ocorrencias_da_sessao.html index eb9ffe195..9975217e0 100644 --- a/sapl/templates/sessao/blocos_resumo/ocorrencias_da_sessao.html +++ b/sapl/templates/sessao/blocos_resumo/ocorrencias_da_sessao.html @@ -1,3 +1,4 @@ +

TESTE

{% if object.ocorrenciasessao.conteudo %}
Ocorrências da Sessão diff --git a/sapl/templates/sessao/ocorrencia_sessao.html b/sapl/templates/sessao/ocorrencias_da_sessao.html similarity index 100% rename from sapl/templates/sessao/ocorrencia_sessao.html rename to sapl/templates/sessao/ocorrencias_da_sessao.html From 324c9f3fb994ed1368eaef6912bd17a3847c7c0e Mon Sep 17 00:00:00 2001 From: AlGouvea Date: Wed, 11 Aug 2021 11:57:26 -0300 Subject: [PATCH 8/9] Removido tag inutil do html --- sapl/templates/sessao/blocos_resumo/ocorrencias_da_sessao.html | 1 - 1 file changed, 1 deletion(-) diff --git a/sapl/templates/sessao/blocos_resumo/ocorrencias_da_sessao.html b/sapl/templates/sessao/blocos_resumo/ocorrencias_da_sessao.html index 9975217e0..eb9ffe195 100644 --- a/sapl/templates/sessao/blocos_resumo/ocorrencias_da_sessao.html +++ b/sapl/templates/sessao/blocos_resumo/ocorrencias_da_sessao.html @@ -1,4 +1,3 @@ -

TESTE

{% if object.ocorrenciasessao.conteudo %}
Ocorrências da Sessão From 827fbf9ab1114009c0c68eb45a1a3a95fdb95aa8 Mon Sep 17 00:00:00 2001 From: AlGouvea Date: Wed, 11 Aug 2021 12:37:05 -0300 Subject: [PATCH 9/9] Consertado problemas com consideracoes finais, ocorrencias da sessao e oradores de explicacoes pessoais - Fix #3434 --- .../templates/pdf_sessao_plenaria_preparar_pysc.py | 2 +- sapl/relatorios/views.py | 5 ++--- sapl/sessao/forms.py | 2 +- .../blocos_sessao_plenaria/ocorrencias_da_sessao.html | 4 ++++ .../blocos_sessao_plenaria/ocorrencias_sessao.html | 4 ---- sapl/templates/relatorios/relatorio_sessao_plenaria.html | 2 +- sapl/templates/sessao/resumo.html | 2 +- sapl/templates/sessao/resumo_ata.html | 2 +- 8 files changed, 11 insertions(+), 12 deletions(-) create mode 100644 sapl/templates/relatorios/blocos_sessao_plenaria/ocorrencias_da_sessao.html delete mode 100644 sapl/templates/relatorios/blocos_sessao_plenaria/ocorrencias_sessao.html diff --git a/sapl/relatorios/templates/pdf_sessao_plenaria_preparar_pysc.py b/sapl/relatorios/templates/pdf_sessao_plenaria_preparar_pysc.py index 710d2ef61..9315d5429 100644 --- a/sapl/relatorios/templates/pdf_sessao_plenaria_preparar_pysc.py +++ b/sapl/relatorios/templates/pdf_sessao_plenaria_preparar_pysc.py @@ -277,7 +277,7 @@ if context.REQUEST['data'] != '': # return lst_votacao sessao = session.id caminho = context.pdf_sessao_plenaria_gerar(rodape, sessao, imagem, inf_basicas_dic, lst_mesa, lst_presenca_sessao, - lst_expedientes, lst_expediente_materia, lst_oradores_expediente, lst_presenca_ordem_dia, lst_votacao, lst_oradores, lst_consideracoes) + lst_expedientes, lst_expediente_materia, lst_oradores_expediente, lst_presenca_ordem_dia, lst_votacao, lst_oradores, lst_ocorrencias, lst_consideracoes) if caminho == 'aviso': response.redirect('mensagem_emitir_proc') else: diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index 8ae7bba97..447721644 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -832,7 +832,6 @@ def get_sessao_plenaria(sessao, casa): # Ocorrências da Sessão lst_ocorrencias = [] ocorrencias = OcorrenciaSessao.objects.filter(sessao_plenaria=sessao) - for o in ocorrencias: conteudo = o.conteudo @@ -851,7 +850,7 @@ def get_sessao_plenaria(sessao, casa): # Ocorrências da Sessão lst_consideracoes = [] - consideracoes = OcorrenciaSessao.objects.filter(sessao_plenaria=sessao) + consideracoes = ConsideracoesFinais.objects.filter(sessao_plenaria=sessao) for c in consideracoes: conteudo = c.conteudo @@ -867,7 +866,7 @@ def get_sessao_plenaria(sessao, casa): c.conteudo = conteudo - lst_consideracoes.append(o) + lst_consideracoes.append(c) return (inf_basicas_dic, cont_mult_dic, diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py index 303495900..fe5ce41fa 100644 --- a/sapl/sessao/forms.py +++ b/sapl/sessao/forms.py @@ -784,7 +784,7 @@ class ResumoOrdenacaoForm(forms.Form): choices=ORDENACAO_RESUMO ) decimo_quinto = forms.ChoiceField( - label='14°', + label='15°', choices=ORDENACAO_RESUMO ) diff --git a/sapl/templates/relatorios/blocos_sessao_plenaria/ocorrencias_da_sessao.html b/sapl/templates/relatorios/blocos_sessao_plenaria/ocorrencias_da_sessao.html new file mode 100644 index 000000000..699dacfcf --- /dev/null +++ b/sapl/templates/relatorios/blocos_sessao_plenaria/ocorrencias_da_sessao.html @@ -0,0 +1,4 @@ +

Ocorrências da Sessão

+ {% for o in lst_ocorrencias%} +

{{o}}

+ {% endfor %} diff --git a/sapl/templates/relatorios/blocos_sessao_plenaria/ocorrencias_sessao.html b/sapl/templates/relatorios/blocos_sessao_plenaria/ocorrencias_sessao.html deleted file mode 100644 index 0a2b04ff1..000000000 --- a/sapl/templates/relatorios/blocos_sessao_plenaria/ocorrencias_sessao.html +++ /dev/null @@ -1,4 +0,0 @@ -

Ocorrências da Sessão

- {% for ocorrencia in lst_ocorrencias%} -

{{ocorrencia}}

- {% endfor %} diff --git a/sapl/templates/relatorios/relatorio_sessao_plenaria.html b/sapl/templates/relatorios/relatorio_sessao_plenaria.html index e459da2b3..cd4bac166 100644 --- a/sapl/templates/relatorios/relatorio_sessao_plenaria.html +++ b/sapl/templates/relatorios/relatorio_sessao_plenaria.html @@ -30,7 +30,7 @@ {% include 'relatorios/blocos_sessao_plenaria/'|add:decimo_terceiro_ordenacao %} - {% include 'relatorios/blocos_sessao_plenaria/'|add:decimo_quarto_ordenacao %} + {% include 'relatorios/blocos_sessao_plenaria/ocorrencias_da_sessao.html' %} {% include 'relatorios/blocos_sessao_plenaria/'|add:decimo_quinto_ordenacao %} diff --git a/sapl/templates/sessao/resumo.html b/sapl/templates/sessao/resumo.html index 539cec810..e481433cb 100644 --- a/sapl/templates/sessao/resumo.html +++ b/sapl/templates/sessao/resumo.html @@ -48,7 +48,7 @@ {% include 'sessao/blocos_resumo/'|add:decimo_terceiro_ordenacao %} - {% include 'sessao/blocos_resumo/'|add:decimo_quarto_ordenacao %} + {% include 'sessao/blocos_resumo/ocorrencias_da_sessao.html' %} {% include 'sessao/blocos_resumo/'|add:decimo_quinto_ordenacao %} diff --git a/sapl/templates/sessao/resumo_ata.html b/sapl/templates/sessao/resumo_ata.html index 6b4b224b6..fcbe60dbd 100644 --- a/sapl/templates/sessao/resumo_ata.html +++ b/sapl/templates/sessao/resumo_ata.html @@ -32,7 +32,7 @@ {% 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/ocorrencias_da_sessao.html' %} {% include 'sessao/blocos_ata/'|add:decimo_quinto_ordenacao %} {% include 'sessao/blocos_ata/assinaturas.html' %} {% endblock detail_content %}