From 46cdbe23c8d44f30f64cf5b92950443601615d8d Mon Sep 17 00:00:00 2001 From: Eduardo Calil Date: Tue, 29 Mar 2016 11:21:24 -0300 Subject: [PATCH] =?UTF-8?q?Finaliza=20a=20funcionalidade=20de=20todos=20os?= =?UTF-8?q?=20campos=20de=20pesquisa.=20Finaliza=20os=20campos=20situacao?= =?UTF-8?q?=20e=20localiza=C3=A7ao=20atual?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- materia/forms.py | 44 ++++++++++++++++++++++++++++++++++++-------- materia/urls.py | 5 +---- materia/views.py | 28 ++++++++++++++++++++++------ 3 files changed, 59 insertions(+), 18 deletions(-) diff --git a/materia/forms.py b/materia/forms.py index ceb8e2eac..d27dba561 100644 --- a/materia/forms.py +++ b/materia/forms.py @@ -1,8 +1,8 @@ from crispy_forms.helper import FormHelper from crispy_forms.layout import HTML, Button, Column, Fieldset, Layout, Submit from django import forms -from django.core.exceptions import ValidationError from django.db.models import Max +from django.core.exceptions import ValidationError from django_filters import FilterSet from django.forms import ModelForm from django.utils.translation import ugettext_lazy as _ @@ -800,10 +800,38 @@ class MateriaLegislativaPesquisaFields(FilterSet): 'autoria__partido', 'local_origem_externa'] - # def filter_tramitacao__status(status): - # ultimas_tramitacoes = Tramitacao.objects.values( - # 'materia_id').annotate(data_encaminhamento=Max( - # 'data_encaminhamento'), - # id=Max('id')) - # ultimas_tramitacoes = ultimas_tramitacoes.filter(status=status) - # return ultimas_tramitacoes.materia + +def pega_ultima_tramitacao(): + ultimas_tramitacoes = Tramitacao.objects.values( + 'materia_id').annotate(data_encaminhamento=Max( + 'data_encaminhamento'), + id=Max('id')) + lista = [ids.get('id') for ids in ultimas_tramitacoes] + return lista + + +def filtra_tramitacao_status(status): + lista = pega_ultima_tramitacao() + ultimas_tramitacoes = Tramitacao.objects.filter(id__in=lista, + status=status) + lista = [ids.materia_id for ids in ultimas_tramitacoes] + return lista + + +def filtra_tramitacao_destino(destino): + lista = pega_ultima_tramitacao() + ultimas_tramitacoes = Tramitacao.objects.filter( + id__in=lista, + unidade_tramitacao_destino=destino) + lista = [ids.materia_id for ids in ultimas_tramitacoes] + return lista + + +def filtra_tramitacao_destino_and_status(status, destino): + lista = pega_ultima_tramitacao() + ultimas_tramitacoes = Tramitacao.objects.filter( + id__in=lista, + status=status, + unidade_tramitacao_destino=destino) + lista = [ids.materia_id for ids in ultimas_tramitacoes] + return lista diff --git a/materia/urls.py b/materia/urls.py index 128cbc103..416f101b3 100644 --- a/materia/urls.py +++ b/materia/urls.py @@ -12,8 +12,7 @@ from materia.views import (AcompanhamentoConfirmarView, MateriaLegislativaCrud, MateriaLegislativaPesquisaView, MateriaTaView, NumeracaoEditView, NumeracaoView, OrgaoCrud, - OrigemCrud, PesquisaMateriaListView, - ProposicaoEditView, ProposicaoListView, + OrigemCrud, ProposicaoEditView, ProposicaoListView, ProposicaoTaView, ProposicaoView, RegimeTramitacaoCrud, RelatoriaEditView, RelatoriaView, StatusTramitacaoCrud, TipoAutorCrud, @@ -100,8 +99,6 @@ urlpatterns = [ ProposicaoEditView.as_view(), name='editar_proposicao'), url(r'^materia/pesquisar-materia$', MateriaLegislativaPesquisaView.as_view(), name='pesquisar_materia'), - url(r'^materia/pesquisar-materia-list$', - PesquisaMateriaListView.as_view(), name='pesquisar_materia_list'), url(r'^materia/(?P\d+)/acompanhar-materia/$', AcompanhamentoMateriaView.as_view(), name='acompanhar_materia'), url(r'^materia/(?P\d+)/acompanhar-confirmar$', diff --git a/materia/views.py b/materia/views.py index 3d9918754..fde159014 100644 --- a/materia/views.py +++ b/materia/views.py @@ -26,6 +26,8 @@ from sapl.utils import get_base_url from .forms import (AcompanhamentoMateriaForm, AutoriaForm, DespachoInicialForm, DocumentoAcessorioForm, FormularioCadastroForm, FormularioSimplificadoForm, + filtra_tramitacao_status, filtra_tramitacao_destino, + filtra_tramitacao_destino_and_status, LegislacaoCitadaForm, MateriaAnexadaForm, MateriaLegislativaPesquisaFields, NumeracaoForm, ProposicaoForm, RelatoriaForm, TramitacaoForm) @@ -226,7 +228,7 @@ class MateriaAnexadaEditView(FormView): def get_success_url(self): pk = self.kwargs['pk'] - return reverse('materia:materia_anexada', kwargs={'pk': pk}) + return reverse('materia_anexada', kwargs={'pk': pk}) class DespachoInicialView(CreateView): @@ -1222,15 +1224,29 @@ class MateriaLegislativaPesquisaView(FilterView): def get(self, request, *args, **kwargs): filterset_class = self.get_filterset_class() self.filterset = self.get_filterset(filterset_class) + status_tramitacao = self.filterset.data.get('tramitacao__status') - if status_tramitacao and status_tramitacao != '': - status = filter_tramitacao__status(status_tramitacao) - mat_filt_ids = [ids.get('materia_id') for ids in status] - # import ipdb; ipdb.set_trace() + unidade_destino = self.filterset.data.get( + 'tramitacao__unidade_tramitacao_destino') + if (status_tramitacao and status_tramitacao != '' and + unidade_destino and unidade_destino != ''): + lista = filtra_tramitacao_destino_and_status(status_tramitacao, + unidade_destino) + self.object_list = self.filterset.qs.filter( + id__in=lista) + + elif status_tramitacao and status_tramitacao != '': + lista = filtra_tramitacao_status(status_tramitacao) self.object_list = self.filterset.qs.filter( - id__in=mat_filt_ids) + id__in=lista) + + elif unidade_destino and unidade_destino != '': + lista = filtra_tramitacao_destino(unidade_destino) + self.object_list = self.filterset.qs.filter( + id__in=lista) else: self.object_list = self.filterset.qs + context = self.get_context_data(filter=self.filterset, object_list=self.object_list) return self.render_to_response(context)