Browse Source

Reduz o override no metodo get, sobrescrevendo o metodo get_filterset_kwargs de FilterView

pull/282/head
Eduardo Calil 9 years ago
parent
commit
579bf54d27
  1. 4
      materia/forms.py
  2. 61
      materia/views.py

4
materia/forms.py

@ -21,7 +21,7 @@ from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria,
Tramitacao) Tramitacao)
ANO_VAZIO = [('', '---------')] + RANGE_ANOS ANO_CHOICES = [('', '---------')] + RANGE_ANOS
def em_tramitacao(): def em_tramitacao():
@ -628,7 +628,7 @@ class MateriaLegislativaFilterSet(django_filters.FilterSet):
ano = django_filters.ChoiceFilter(required=False, ano = django_filters.ChoiceFilter(required=False,
label=u'Ano da Matéria', label=u'Ano da Matéria',
choices=ANO_VAZIO, choices=ANO_CHOICES,
help_text="") help_text="")
class Meta: class Meta:

61
materia/views.py

@ -1199,49 +1199,56 @@ class MateriaLegislativaPesquisaView(FilterView):
filterset_class = MateriaLegislativaFilterSet filterset_class = MateriaLegislativaFilterSet
paginate_by = 10 paginate_by = 10
def get_context_data(self, **kwargs): def get_filterset_kwargs(self, filterset_class):
context = super(MateriaLegislativaPesquisaView, super(MateriaLegislativaPesquisaView,
self).get_context_data(**kwargs) self).get_filterset_kwargs(filterset_class)
paginator = context['paginator']
page_obj = context['page_obj']
context['page_range'] = make_pagination(
page_obj.number, paginator.num_pages)
return context kwargs = {'data': self.request.GET or None}
def get(self, request, *args, **kwargs): status_tramitacao = self.request.GET.get('tramitacao__status')
filterset_class = self.get_filterset_class() unidade_destino = self.request.GET.get(
self.filterset = self.get_filterset(filterset_class) 'tramitacao__unidade_tramitacao_destino')
data = self.filterset.data qs = self.get_queryset()
status_tramitacao = data.get('tramitacao__status')
unidade_destino = data.get('tramitacao__unidade_tramitacao_destino')
if status_tramitacao and unidade_destino: if status_tramitacao and unidade_destino:
lista = filtra_tramitacao_destino_and_status(status_tramitacao, lista = filtra_tramitacao_destino_and_status(status_tramitacao,
unidade_destino) unidade_destino)
self.object_list = self.filterset.qs.filter( qs = qs.filter(id__in=lista).distinct()
id__in=lista).distinct()
elif status_tramitacao: elif status_tramitacao:
lista = filtra_tramitacao_status(status_tramitacao) lista = filtra_tramitacao_status(status_tramitacao)
self.object_list = self.filterset.qs.filter( qs = qs.filter(id__in=lista).distinct()
id__in=lista).distinct()
elif unidade_destino: elif unidade_destino:
lista = filtra_tramitacao_destino(unidade_destino) lista = filtra_tramitacao_destino(unidade_destino)
self.object_list = self.filterset.qs.filter( qs = qs.filter(id__in=lista).distinct()
id__in=lista).distinct()
else: kwargs.update({
self.object_list = self.filterset.qs '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 # Se a pesquisa estiver quebrando com a paginação
# Olhe esta função abaixo # Olhe esta função abaixo
# Provavelmente você criou um novo campo no Form/Field # Provavelmente você criou um novo campo no Form/Field
# Então a ordem da URL está diferente # Então a ordem da URL está diferente
data = self.filterset.data
if (data and data.get('tipo') is not None): if (data and data.get('tipo') is not None):
url = "&"+str(self.request.environ['QUERY_STRING']) url = "&"+str(self.request.environ['QUERY_STRING'])
if url[:5] == "&page": if url[:5] == "&page":
@ -1250,14 +1257,14 @@ class MateriaLegislativaPesquisaView(FilterView):
else: else:
url = '' url = ''
self.filterset.form.fields['o'].label = _('Ordenação')
context = self.get_context_data(filter=self.filterset, context = self.get_context_data(filter=self.filterset,
object_list=self.object_list, object_list=self.object_list,
filter_url=url, filter_url=url,
numero_res=len(self.object_list) numero_res=len(self.object_list)
) )
self.filterset.form.fields['o'].label = _('Ordenação')
return self.render_to_response(context) return self.render_to_response(context)

Loading…
Cancel
Save