From 6ea7c0975c67d8ae134fa850e05cfeea413012b1 Mon Sep 17 00:00:00 2001 From: Eduardo Calil Date: Tue, 15 Aug 2017 16:24:21 -0300 Subject: [PATCH] Fix #1257 --- sapl/sessao/forms.py | 28 +++++++---- sapl/sessao/views.py | 49 +++++++++---------- .../adicionar_varias_materias_expediente.html | 12 +++-- .../adicionar_varias_materias_ordem.html | 2 +- 4 files changed, 51 insertions(+), 40 deletions(-) diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py index c617364bc..2b9e6788c 100644 --- a/sapl/sessao/forms.py +++ b/sapl/sessao/forms.py @@ -10,7 +10,8 @@ from django.utils.translation import ugettext_lazy as _ from sapl.crispy_layout_mixin import form_actions, to_row from sapl.materia.forms import MateriaLegislativaFilterSet -from sapl.materia.models import MateriaLegislativa, TipoMateriaLegislativa +from sapl.materia.models import (MateriaLegislativa, TipoMateriaLegislativa, + StatusTramitacao) from sapl.parlamentares.models import Parlamentar from sapl.utils import (RANGE_DIAS_MES, RANGE_MESES, MateriaPesquisaOrderingFilter, autor_label, @@ -287,10 +288,15 @@ class SessaoPlenariaFilterSet(django_filters.FilterSet): class AdicionarVariasMateriasFilterSet(MateriaLegislativaFilterSet): o = MateriaPesquisaOrderingFilter() + tramitacao__status = django_filters.ModelChoiceFilter( + required=True, + queryset=StatusTramitacao.objects.all(), + label=_('Status da Matéria')) class Meta: model = MateriaLegislativa - fields = ['numero', + fields = ['tramitacao__status', + 'numero', 'numero_protocolo', 'ano', 'tipo', @@ -312,15 +318,17 @@ class AdicionarVariasMateriasFilterSet(MateriaLegislativaFilterSet): self.filters['relatoria__parlamentar_id'].label = 'Relatoria' row1 = to_row( - [('tipo', 12)]) + [('tramitacao__status', 12)]) row2 = to_row( + [('tipo', 12)]) + row3 = to_row( [('numero', 4), ('ano', 4), ('numero_protocolo', 4)]) - row3 = to_row( + row4 = to_row( [('data_apresentacao', 6), ('data_publicacao', 6)]) - row4 = to_row( + row5 = to_row( [('autoria__autor', 0), (Button('pesquisar', 'Pesquisar Autor', @@ -328,17 +336,17 @@ class AdicionarVariasMateriasFilterSet(MateriaLegislativaFilterSet): (Button('limpar', 'limpar Autor', css_class='btn btn-primary btn-sm'), 10)]) - row5 = to_row( + row6 = to_row( [('autoria__autor__tipo', 6), # ('autoria__autor__partido', 6) ]) - row6 = to_row( + row7 = to_row( [('relatoria__parlamentar_id', 6), ('local_origem_externa', 6)]) - row7 = to_row( + row8 = to_row( [('em_tramitacao', 6), ('o', 6)]) - row8 = to_row( + row9 = to_row( [('ementa', 12)]) self.form.helper = FormHelper() @@ -348,7 +356,7 @@ class AdicionarVariasMateriasFilterSet(MateriaLegislativaFilterSet): row1, row2, row3, HTML(autor_label), HTML(autor_modal), - row4, row5, row6, row7, row8, + row4, row5, row6, row7, row8, row9, form_actions(save_label='Pesquisar')) ) diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index fb44472c9..4ab7ea4f8 100644 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -25,7 +25,7 @@ from sapl.base.models import AppConfig as AppsAppConfig from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux, MasterDetailCrud, PermissionRequiredForAppCrudMixin, make_pagination) -from sapl.materia.forms import pega_ultima_tramitacao +from sapl.materia.forms import filtra_tramitacao_status from sapl.materia.models import (Autoria, DocumentoAcessorio, TipoMateriaLegislativa, Tramitacao) from sapl.materia.views import MateriaLegislativaPesquisaView @@ -2434,14 +2434,6 @@ class PesquisarPautaSessaoView(PesquisarSessaoPlenariaView): return context -def filtra_tramitacao_ordem_dia(): - lista = pega_ultima_tramitacao() - return Tramitacao.objects.filter( - id__in=lista, - status__descricao='Ordem do Dia').distinct().values_list( - 'materia_id', flat=True) - - def retira_materias_ja_adicionadas(id_sessao, model): lista = model.objects.filter( sessao_plenaria_id=id_sessao) @@ -2463,17 +2455,21 @@ class AdicionarVariasMateriasExpediente(PermissionRequiredForAppCrudMixin, qs = self.get_queryset() - lista_ordem_dia = filtra_tramitacao_ordem_dia() + if 'tramitacao__status' in self.request.GET: + if self.request.GET['tramitacao__status']: + lista_status = filtra_tramitacao_status( + self.request.GET['tramitacao__status']) - lista_materias_adicionadas = retira_materias_ja_adicionadas( - self.kwargs['pk'], ExpedienteMateria) + lista_materias_adicionadas = retira_materias_ja_adicionadas( + self.kwargs['pk'], ExpedienteMateria) - qs = qs.filter(id__in=lista_ordem_dia).exclude( - id__in=lista_materias_adicionadas).distinct() + qs = qs.filter(id__in=lista_status).exclude( + id__in=lista_materias_adicionadas).distinct() + + kwargs.update({ + 'queryset': qs, + }) - kwargs.update({ - 'queryset': qs, - }) return kwargs def get_context_data(self, **kwargs): @@ -2543,17 +2539,20 @@ class AdicionarVariasMateriasOrdemDia(AdicionarVariasMateriasExpediente): qs = self.get_queryset() - lista_ordem_dia = filtra_tramitacao_ordem_dia() + if 'tramitacao__status' in self.request.GET: + if self.request.GET['tramitacao__status']: + lista_status = filtra_tramitacao_status( + self.request.GET['tramitacao__status']) - lista_materias_adicionadas = retira_materias_ja_adicionadas( - self.kwargs['pk'], OrdemDia) + lista_materias_adicionadas = retira_materias_ja_adicionadas( + self.kwargs['pk'], OrdemDia) - qs = qs.filter(id__in=lista_ordem_dia).exclude( - id__in=lista_materias_adicionadas).distinct() + qs = qs.filter(id__in=lista_status).exclude( + id__in=lista_materias_adicionadas).distinct() - kwargs.update({ - 'queryset': qs, - }) + kwargs.update({ + 'queryset': qs, + }) return kwargs def post(self, request, *args, **kwargs): diff --git a/sapl/templates/sessao/adicionar_varias_materias_expediente.html b/sapl/templates/sessao/adicionar_varias_materias_expediente.html index c8f25c923..362ba300d 100644 --- a/sapl/templates/sessao/adicionar_varias_materias_expediente.html +++ b/sapl/templates/sessao/adicionar_varias_materias_expediente.html @@ -9,7 +9,7 @@ {% block detail_content %} {% block buttons %} - {% if filter_url %} + {% if filter_url and not filter.form.errors %}
{% trans 'Fazer nova pesquisa' %}
@@ -22,12 +22,16 @@ {% endblock %} - {% if not filter_url %} + {% if filter.form.errors %} {% crispy filter.form %} - {% endif %} + {% else %} + {% if not filter_url %} + {% crispy filter.form %} + {% endif %} + {% endif %}

- {% if filter_url %} + {% if filter_url and not filter.form.errors %} diff --git a/sapl/templates/sessao/adicionar_varias_materias_ordem.html b/sapl/templates/sessao/adicionar_varias_materias_ordem.html index 381cae9d7..51d4fee23 100644 --- a/sapl/templates/sessao/adicionar_varias_materias_ordem.html +++ b/sapl/templates/sessao/adicionar_varias_materias_ordem.html @@ -4,7 +4,7 @@ {% block buttons %} - {% if filter_url %} + {% if filter_url and not filter.form.errors %}
{% trans 'Fazer nova pesquisa' %}