diff --git a/materia/views.py b/materia/views.py index ab808c4ce..314defd43 100644 --- a/materia/views.py +++ b/materia/views.py @@ -1876,7 +1876,13 @@ def em_tramitacao(): (False, 'Não')] +def ordenacao_materias(): + return [(1, 'Crescente'), + (2, 'Decrescente')] + + class MateriaLegislativaPesquisaForm(forms.Form): + autor = forms.ModelChoiceField( label='Autor', required=False, @@ -1918,6 +1924,12 @@ class MateriaLegislativaPesquisaForm(forms.Form): ano = forms.CharField(required=False, label=u'Ano da Matéria') assunto = forms.CharField(required=False, label=u'Assunto') + ordem = forms.ChoiceField(required=False, + label='Ordenação', + choices=ordenacao_materias(), + widget=forms.Select( + attrs={'class': 'selector'})) + localizacao = forms.ModelChoiceField( label='Localização Atual', required=False, @@ -1951,6 +1963,12 @@ class MateriaLegislativaPesquisaForm(forms.Form): queryset=Partido.objects.all(), empty_label='Selecione') + local_origem_externa = forms.ModelChoiceField( + label='Localização de Origem', + required=False, + queryset=Origem.objects.all(), + empty_label='Selecione') + # TODO: Verificar se esses campos estão corretos # assunto? # -> usado 'ementa' em 'assunto' # localizacao atual? # @@ -1970,15 +1988,17 @@ class MateriaLegislativaPesquisaForm(forms.Form): ('data_publicacao', 6)]) row4 = sapl.layout.to_row( [('autor', 6), - ('relator', 6)]) + ('partido_autor', 6)]) row5 = sapl.layout.to_row( [('tipo_autor', 6), - ('partido_autor', 6)]) + ('relator', 6)]) row6 = sapl.layout.to_row( - [('localizacao', 6), - ('situacao', 6)]) + [('local_origem_externa', 6), + ('localizacao', 6)]) row7 = sapl.layout.to_row( - [('tramitacao', 12)]) + [('tramitacao', 4), + ('situacao', 4), + ('ordem', 4)]) row8 = sapl.layout.to_row( [('assunto', 12)]) @@ -2079,8 +2099,10 @@ class MateriaLegislativaPesquisaView(FormMixin, GenericView): if request.POST['tramitacao']: kwargs['em_tramitacao'] = request.POST['tramitacao'] + # Pega "palavras-chaves" que podem ter na ementa, icontains NÃO é + # case-sensitive if request.POST['assunto']: - kwargs['ementa'] = request.POST['assunto'] + kwargs['ementa__icontains'] = request.POST['assunto'] if request.POST['autor']: kwargs['autoria__autor__id'] = request.POST['autor'] @@ -2101,6 +2123,13 @@ class MateriaLegislativaPesquisaView(FormMixin, GenericView): if request.POST['partido_autor']: kwargs['autoria__partido'] = request.POST['partido_autor'] + if request.POST['ordem']: + kwargs['ordem'] = request.POST['ordem'] + + if request.POST['local_origem_externa']: + kwargs['local_origem_externa'] = request.POST[ + 'local_origem_externa'] + request.session['kwargs'] = kwargs return redirect('pesquisar_materia_list') @@ -2113,9 +2142,20 @@ class PesquisaMateriaListView(FormMixin, ListView): def get_queryset(self): kwargs = self.request.session['kwargs'] - lista_materias = MateriaLegislativa.objects.filter(**kwargs) + + ordem = int(kwargs.pop('ordem')) + if ordem == 1: + lista_materias = MateriaLegislativa.objects.filter( + **kwargs).order_by( + 'ano', 'numero').distinct() + else: + lista_materias = MateriaLegislativa.objects.filter( + **kwargs).order_by( + '-ano', '-numero').distinct() + materias = [] + # Garante que a pesquisa retornará a última tramitação if (kwargs.get('tramitacao__unidade_tramitacao_destino') and kwargs.get('tramitacao__status')): local = int(kwargs['tramitacao__unidade_tramitacao_destino']) @@ -2146,35 +2186,6 @@ class PesquisaMateriaListView(FormMixin, ListView): else: return lista_materias - # kwargs = self.request.session['kwargs'] - # id_parlamentar = kwargs.get('relatoria') - # if kwargs.get('relatoria'): - # kwargs.pop('relatoria') - # materias = MateriaLegislativa.objects.filter(**kwargs) - # if not kwargs.get('autoria'): - # return MateriaLegislativa.objects.filter( - # relatoria__parlamentar__id=id_parlamentar, - # relatoria__data_destituicao_relator__isnull=True, - # relatoria__materia__in=materias) - # else: - # id_parlamentar_autoria = kwargs.get('autoria') - # kwargs.pop('autoria') - # materias = MateriaLegislativa.objects.filter(**kwargs) - # return MateriaLegislativa.objects.filter( - # relatoria__parlamentar__id=id_parlamentar, - # relatoria__data_destituicao_relator__isnull=True, - # autoria__autor__id=id_parlamentar_autoria, - # autoria__materia__in=materias, - # relatoria__materia__in=materias) - - # if kwargs.get('autoria'): - # id_parlamentar = kwargs.get('autoria') - # kwargs.pop('autoria') - # materias = MateriaLegislativa.objects.filter(**kwargs) - # return MateriaLegislativa.objects.filter( - # autoria__autor__id=id_parlamentar, - # autoria__materia__in=materias) - def get_context_data(self, **kwargs): context = super(PesquisaMateriaListView, self).get_context_data( **kwargs)