From b3279caec2f43f5c00bad59751b12779e4b88f53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Cantu=C3=A1ria?= Date: Thu, 16 Apr 2020 11:35:09 -0300 Subject: [PATCH] =?UTF-8?q?Adiciona=20op=C3=A7=C3=A3oes=20para=20reordena?= =?UTF-8?q?=C3=A7=C3=A3o=20(#3132)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adiona reordenações para matérias ordem do dia Adiciona correções solicitadas Remove parâmetro desnecessário de ordenações Corrige href de ordenações Remove multiplicação de matérias causada por múltiplos autorias Corrige forma de desmultiplicação de matérias causada por múltiplos autores Corrige ordenações de matérias --- sapl/sessao/urls.py | 17 +--- sapl/sessao/views.py | 78 ++++++------------- .../sessao/expedientemateria_list.html | 16 ++-- sapl/templates/sessao/ordemdia_list.html | 17 ++-- 4 files changed, 50 insertions(+), 78 deletions(-) diff --git a/sapl/sessao/urls.py b/sapl/sessao/urls.py index d2415d405..442e2e318 100644 --- a/sapl/sessao/urls.py +++ b/sapl/sessao/urls.py @@ -26,10 +26,7 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente, mudar_ordem_materia_sessao, recuperar_materia, recuperar_numero_sessao_view, remove_parlamentar_composicao, - reordernar_materias_expediente, - reordernar_materias_ordem, - renumerar_materias_ordem, - renumerar_materias_expediente, + reordena_materias, sessao_legislativa_legislatura_ajax, VotacaoEmBlocoOrdemDia, VotacaoEmBlocoExpediente, VotacaoEmBlocoSimbolicaView, VotacaoEmBlocoNominalView, @@ -89,15 +86,9 @@ urlpatterns = [ url(r'^sessao/(?P\d+)/(?P\d+)/abrir-votacao$', abrir_votacao, name="abrir_votacao"), - url(r'^sessao/(?P\d+)/reordenar-expediente$', - reordernar_materias_expediente, - name="reordenar_expediente"), - url(r'^sessao/(?P\d+)/reordenar-ordem$', reordernar_materias_ordem, - name="reordenar_ordem"), - url(r'^sessao/(?P\d+)/renumerar-ordem$', renumerar_materias_ordem, - name="renumerar_ordem"), - url(r'^sessao/(?P\d+)/renumerar-materias-expediente$', renumerar_materias_expediente, - name="renumerar_materias_expediente"), + + url(r'^sessao/(?P\d+)/reordena/(?P[\w\-]+)/(?P\d+)/$', reordena_materias, name="reordena_materias"), + url(r'^sistema/sessao-plenaria/tipo/', include(TipoSessaoCrud.get_urls())), url(r'^sistema/sessao-plenaria/tipo-resultado-votacao/', diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index d98aec3bf..cd21af3ef 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -1,7 +1,9 @@ import logging -from re import sub, search import ast +from collections import OrderedDict +from re import sub, search + from django.contrib import messages from django.contrib.auth.decorators import permission_required from django.contrib.auth.mixins import PermissionRequiredMixin @@ -84,59 +86,27 @@ class TipoListaDiscursoCrud(CrudAux): return context -def reordernar_materias_expediente(request, pk): - expedientes = ExpedienteMateria.objects.filter( - sessao_plenaria_id=pk - ).order_by( - 'materia__tipo__sequencia_regimental', - 'materia__ano', - 'materia__numero' - ) - - for exp_num, e in enumerate(expedientes, 1): - e.numero_ordem = exp_num - e.save() - - return HttpResponseRedirect( - reverse('sapl.sessao:expedientemateria_list', kwargs={'pk': pk})) - - -def reordernar_materias_ordem(request, pk): - ordens = OrdemDia.objects.filter( - sessao_plenaria_id=pk - ).order_by( - 'materia__tipo__sequencia_regimental', - 'materia__ano', - 'materia__numero' - ) - for ordem_num, o in enumerate(ordens, 1): - o.numero_ordem = ordem_num - o.save() - - return HttpResponseRedirect( - reverse('sapl.sessao:ordemdia_list', kwargs={'pk': pk})) - - -def renumerar_materias_ordem(request, pk): - ordens = OrdemDia.objects.filter(sessao_plenaria_id=pk) - - for ordem_num, o in enumerate(ordens, 1): - o.numero_ordem = ordem_num - o.save() - - return HttpResponseRedirect( - reverse('sapl.sessao:ordemdia_list', kwargs={'pk': pk})) - - -def renumerar_materias_expediente(request, pk): - expedientes = ExpedienteMateria.objects.filter(sessao_plenaria_id=pk) - - for exp_num, e in enumerate(expedientes, 1): - e.numero_ordem = exp_num - e.save() - - return HttpResponseRedirect( - reverse('sapl.sessao:expedientemateria_list', kwargs={'pk': pk})) +def reordena_materias(request, pk, tipo, ordenacao): + TIPOS_MATERIAS = { + "expediente": ExpedienteMateria, + "ordemdia": OrdemDia + } + TIPOS_ORDENACAO = { + "1": ("materia__tipo__sequencia_regimental", "materia__ano", "materia__numero"), + "2": ("materia__ano", "materia__numero"), + "3": ("-materia__ano", "materia__numero"), + "4": ("materia__autores", "materia__ano", "materia__numero") + } + TIPOS_URLS_SUCESSO = { + "expediente": "sapl.sessao:expedientemateria_list", + "ordemdia": "sapl.sessao:ordemdia_list" + } + materias = TIPOS_MATERIAS[tipo].objects.filter(sessao_plenaria_id=pk).order_by(*TIPOS_ORDENACAO[ordenacao]) + materias = OrderedDict.fromkeys(materias) + for numero, materia in enumerate(materias, 1): + materia.numero_ordem = numero + materia.save() + return HttpResponseRedirect(reverse(TIPOS_URLS_SUCESSO[tipo], kwargs={'pk': pk})) def verifica_presenca(request, model, spk, is_leitura=False): diff --git a/sapl/templates/sessao/expedientemateria_list.html b/sapl/templates/sessao/expedientemateria_list.html index e1bd0f781..b7d6870a9 100644 --- a/sapl/templates/sessao/expedientemateria_list.html +++ b/sapl/templates/sessao/expedientemateria_list.html @@ -6,15 +6,21 @@ {% block more_buttons %} {% if perms|get_add_perm:view %} - - {% blocktrans with verbose_name=view.verbose_name %} Reordenar pela precedência {% endblocktrans %} - - - {% blocktrans with verbose_name=view.verbose_name %} Renumerar Expediente {% endblocktrans %} {% blocktrans with verbose_name=view.verbose_name %} Adicionar Várias Matérias {% endblocktrans %} + + + + {% endif %} {% endblock more_buttons %} diff --git a/sapl/templates/sessao/ordemdia_list.html b/sapl/templates/sessao/ordemdia_list.html index bc95cf1f1..cf5b1fed4 100644 --- a/sapl/templates/sessao/ordemdia_list.html +++ b/sapl/templates/sessao/ordemdia_list.html @@ -6,15 +6,20 @@ {% block more_buttons %} {% if perms|get_add_perm:view %} - - {% blocktrans with verbose_name=view.verbose_name %} Reordenar pela precedência {% endblocktrans %} - - - {% blocktrans with verbose_name=view.verbose_name %} Renumerar Ordem {% endblocktrans %} - {% blocktrans with verbose_name=view.verbose_name %} Adicionar Várias Matérias {% endblocktrans %} + + + + {% endif %} {% endblock more_buttons %}