From 59bced7c19a54ea16982b5c53a468cb607c63aa4 Mon Sep 17 00:00:00 2001 From: joao Date: Tue, 22 Nov 2022 18:02:00 -0500 Subject: [PATCH] fix: Ajustes na Leitura em bloco, inclusao da funcionalidade para Ordem do dia --- sapl/sessao/urls.py | 5 +- sapl/sessao/views.py | 83 ++++++++++--------- .../sessao/leitura/leitura_bloco.html | 4 +- sapl/templates/sessao/subnav.yaml | 3 + 4 files changed, 54 insertions(+), 41 deletions(-) diff --git a/sapl/sessao/urls.py b/sapl/sessao/urls.py index fd2d7c775..05e19a844 100644 --- a/sapl/sessao/urls.py +++ b/sapl/sessao/urls.py @@ -31,7 +31,7 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente, sessao_legislativa_legislatura_ajax, VotacaoEmBlocoOrdemDia, VotacaoEmBlocoExpediente, VotacaoEmBlocoSimbolicaView, VotacaoEmBlocoNominalView, - LeituraEmBlocoExpediente, + LeituraEmBlocoExpediente, LeituraEmBlocoOrdemDia, recuperar_nome_tipo_sessao, ExpedienteLeituraView, OrdemDiaLeituraView, @@ -162,6 +162,9 @@ urlpatterns = [ url(r'^sessao/(?P\d+)/leitura_bloco_expediente$', LeituraEmBlocoExpediente.as_view(), name='leitura_bloco_expediente'), + url(r'^sessao/(?P\d+)/leitura_bloco_ordem_dia$', + LeituraEmBlocoOrdemDia.as_view(), + name='leitura_bloco_ordem_dia'), url(r'^sessao/(?P\d+)/resumo$', ResumoView.as_view(), name='resumo'), url(r'^sessao/(?P\d+)/resumo_ata$', diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 5b032260d..4ad940c96 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -274,8 +274,8 @@ def customize_link_materia(context, pk, has_permission, is_expediente): exist_leitura = obj.registroleitura_set.filter( materia=obj.materia).exists() - if (obj.tipo_votacao != 4 and not exist_resultado and not exist_retirada) or \ - (obj.tipo_votacao == 4 and not exist_leitura): + if (obj.tipo_votacao != LEITURA and not exist_resultado and not exist_retirada) or \ + (obj.tipo_votacao == LEITURA and not exist_leitura): if obj.votacao_aberta: url = '' if is_expediente: @@ -4384,7 +4384,7 @@ class JustificativaAusenciaCrud(MasterDetailCrud): pass -class LeituraEmBlocoExpediente(PermissionRequiredForAppCrudMixin, ListView): +class LeituraEmBloco(PermissionRequiredForAppCrudMixin, ListView): template_name = 'sessao/leitura/leitura_bloco.html' app_label = AppConfig.label expediente = True @@ -4392,7 +4392,7 @@ class LeituraEmBlocoExpediente(PermissionRequiredForAppCrudMixin, ListView): def get_queryset(self): return ExpedienteMateria.objects.filter(sessao_plenaria_id=self.kwargs['pk'], - retiradapauta=None, tipo_votacao=4, registroleitura__materia=None) + retiradapauta=None, tipo_votacao=LEITURA, registroleitura__materia=None) def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) @@ -4413,46 +4413,35 @@ class LeituraEmBlocoExpediente(PermissionRequiredForAppCrudMixin, ListView): def post(self, request, *args, **kwargs): if 'marcadas_4' in request.POST: models = None + selectedlist = request.POST.getlist('marcadas_4') if request.POST['origem'] == 'ordem': - models = OrdemDia.objects.filter(id__in=request.POST.getlist('marcadas_4')) + models = OrdemDia.objects.filter(id__in=selectedlist) elif request.POST['origem'] == 'expediente': - models = ExpedienteMateria.objects.filter(id__in=request.POST.getlist('marcadas_4')) + models = ExpedienteMateria.objects.filter(id__in=selectedlist) - if models is None: + if not models: messages.add_message(self.request, messages.ERROR, _('Impossível localizar as matérias selecionadas')) return self.get(request, self.kwargs) - else: - for m in models: - try: - obj = None - if isinstance(m, ExpedienteMateria): - obj = RegistroLeitura.objects.filter(materia=m.materia, expediente=m).delete() - obj = RegistroLeitura() - obj.expediente = m - elif isinstance(m, OrdemDia): - obj = RegistroLeitura.objects.filter(materia=m.materia, ordem=m).delete() - obj = RegistroLeitura() - obj.ordem = m - else: - messages.add_message(self.request, messages.ERROR, - _('Tipo de Pauta nao encontrado')) - return self.get(request, self.kwargs) - - obj.materia = m.materia - obj.observacao = request.POST['observacao'] - obj.user = self.request.user - obj.ip = get_client_ip(self.request) - obj.save() - - except Exception as e: - messages.add_message(self.request, messages.ERROR, - _('Erro ao salvar registro de Leitura, por favor, refaça a operação')) - return self.get(request, self.kwargs) - else: - m.resultado = "Matéria lida" - m.votacao_aberta = False - m.save() + + materias = [m.materia for m in models] + RegistroLeitura.objects.filter(materia__in=materias).delete() + leituras = [] + for m in models: + obj = None + if isinstance(m, ExpedienteMateria): + obj = RegistroLeitura(expediente=m, materia=m.materia, + observacao=request.POST['observacao'], + user=self.request.user, + ip=get_client_ip(self.request)) + elif isinstance(m, OrdemDia): + obj = RegistroLeitura(ordem=m, materia=m.materia, + observacao=request.POST['observacao'], + user=self.request.user, + ip=get_client_ip(self.request)) + leituras.append(obj) + + RegistroLeitura.objects.bulk_create(leituras) else: messages.add_message(self.request, messages.ERROR, _('Nenhuma matéria selecionada para leitura em Bloco')) return self.get(request, self.kwargs) @@ -4468,6 +4457,24 @@ class LeituraEmBlocoExpediente(PermissionRequiredForAppCrudMixin, ListView): kwargs={'pk': self.kwargs['pk']}) +class LeituraEmBlocoExpediente(LeituraEmBloco): + expediente = True + paginate_by = 100 + + def get_queryset(self): + return ExpedienteMateria.objects.filter(sessao_plenaria_id=self.kwargs['pk'], + retiradapauta=None, tipo_votacao=LEITURA, registroleitura__materia=None) + + +class LeituraEmBlocoOrdemDia(LeituraEmBloco): + expediente = False + paginate_by = 100 + + def get_queryset(self): + return OrdemDia.objects.filter(sessao_plenaria_id=self.kwargs['pk'], + retiradapauta=None, tipo_votacao=LEITURA, registroleitura__materia=None) + + class VotacaoEmBlocoExpediente(PermissionRequiredForAppCrudMixin, ListView): template_name = 'sessao/votacao/votacao_bloco.html' app_label = AppConfig.label diff --git a/sapl/templates/sessao/leitura/leitura_bloco.html b/sapl/templates/sessao/leitura/leitura_bloco.html index 3ec075539..ac6a45cb4 100644 --- a/sapl/templates/sessao/leitura/leitura_bloco.html +++ b/sapl/templates/sessao/leitura/leitura_bloco.html @@ -38,7 +38,7 @@
@@ -103,7 +103,7 @@ {% block extra_js %}