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 %}