diff --git a/materia/forms.py b/materia/forms.py index 5ca5aa385..2920ae268 100644 --- a/materia/forms.py +++ b/materia/forms.py @@ -21,7 +21,7 @@ from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria, Tramitacao) -ANO_VAZIO = [('', '---------')] + RANGE_ANOS +ANO_CHOICES = [('', '---------')] + RANGE_ANOS def em_tramitacao(): @@ -628,7 +628,7 @@ class MateriaLegislativaFilterSet(django_filters.FilterSet): ano = django_filters.ChoiceFilter(required=False, label=u'Ano da Matéria', - choices=ANO_VAZIO, + choices=ANO_CHOICES, help_text="") class Meta: diff --git a/materia/views.py b/materia/views.py index 03c9443f4..f423bc4d0 100644 --- a/materia/views.py +++ b/materia/views.py @@ -1199,49 +1199,56 @@ class MateriaLegislativaPesquisaView(FilterView): filterset_class = MateriaLegislativaFilterSet paginate_by = 10 - def get_context_data(self, **kwargs): - context = super(MateriaLegislativaPesquisaView, - self).get_context_data(**kwargs) - - paginator = context['paginator'] - page_obj = context['page_obj'] - - context['page_range'] = make_pagination( - page_obj.number, paginator.num_pages) + def get_filterset_kwargs(self, filterset_class): + super(MateriaLegislativaPesquisaView, + self).get_filterset_kwargs(filterset_class) - return context + kwargs = {'data': self.request.GET or None} - def get(self, request, *args, **kwargs): - filterset_class = self.get_filterset_class() - self.filterset = self.get_filterset(filterset_class) + status_tramitacao = self.request.GET.get('tramitacao__status') + unidade_destino = self.request.GET.get( + 'tramitacao__unidade_tramitacao_destino') - data = self.filterset.data - - status_tramitacao = data.get('tramitacao__status') - unidade_destino = data.get('tramitacao__unidade_tramitacao_destino') + qs = self.get_queryset() if status_tramitacao and unidade_destino: lista = filtra_tramitacao_destino_and_status(status_tramitacao, unidade_destino) - self.object_list = self.filterset.qs.filter( - id__in=lista).distinct() + qs = qs.filter(id__in=lista).distinct() elif status_tramitacao: lista = filtra_tramitacao_status(status_tramitacao) - self.object_list = self.filterset.qs.filter( - id__in=lista).distinct() + qs = qs.filter(id__in=lista).distinct() elif unidade_destino: lista = filtra_tramitacao_destino(unidade_destino) - self.object_list = self.filterset.qs.filter( - id__in=lista).distinct() - else: - self.object_list = self.filterset.qs + qs = qs.filter(id__in=lista).distinct() + + kwargs.update({ + 'queryset': qs, + }) + return kwargs + + def get_context_data(self, **kwargs): + context = super(MateriaLegislativaPesquisaView, + self).get_context_data(**kwargs) + + paginator = context['paginator'] + page_obj = context['page_obj'] + + context['page_range'] = make_pagination( + page_obj.number, paginator.num_pages) + + return context + + def get(self, request, *args, **kwargs): + super(MateriaLegislativaPesquisaView, self).get(request) # Se a pesquisa estiver quebrando com a paginação # Olhe esta função abaixo # Provavelmente você criou um novo campo no Form/Field # Então a ordem da URL está diferente + data = self.filterset.data if (data and data.get('tipo') is not None): url = "&"+str(self.request.environ['QUERY_STRING']) if url[:5] == "&page": @@ -1250,14 +1257,14 @@ class MateriaLegislativaPesquisaView(FilterView): else: url = '' + self.filterset.form.fields['o'].label = _('Ordenação') + context = self.get_context_data(filter=self.filterset, object_list=self.object_list, filter_url=url, numero_res=len(self.object_list) ) - self.filterset.form.fields['o'].label = _('Ordenação') - return self.render_to_response(context)