Browse Source

Finaliza a funcionalidade de todos os campos de pesquisa. Finaliza os campos situacao e localizaçao atual

pull/282/head
Eduardo Calil 9 years ago
parent
commit
33f06da9f5
  1. 44
      materia/forms.py
  2. 5
      materia/urls.py
  3. 154
      materia/views.py

44
materia/forms.py

@ -1,8 +1,8 @@
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, Button, Column, Fieldset, Layout, Submit from crispy_forms.layout import HTML, Button, Column, Fieldset, Layout, Submit
from django import forms from django import forms
from django.core.exceptions import ValidationError
from django.db.models import Max from django.db.models import Max
from django.core.exceptions import ValidationError
from django_filters import FilterSet from django_filters import FilterSet
from django.forms import ModelForm from django.forms import ModelForm
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
@ -789,10 +789,38 @@ class MateriaLegislativaPesquisaFields(FilterSet):
'autoria__partido', 'autoria__partido',
'local_origem_externa'] 'local_origem_externa']
# def filter_tramitacao__status(status):
# ultimas_tramitacoes = Tramitacao.objects.values( def pega_ultima_tramitacao():
# 'materia_id').annotate(data_encaminhamento=Max( ultimas_tramitacoes = Tramitacao.objects.values(
# 'data_encaminhamento'), 'materia_id').annotate(data_encaminhamento=Max(
# id=Max('id')) 'data_encaminhamento'),
# ultimas_tramitacoes = ultimas_tramitacoes.filter(status=status) id=Max('id'))
# return ultimas_tramitacoes.materia 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

5
materia/urls.py

@ -12,8 +12,7 @@ from materia.views import (AcompanhamentoConfirmarView,
MateriaLegislativaCrud, MateriaLegislativaCrud,
MateriaLegislativaPesquisaView, MateriaTaView, MateriaLegislativaPesquisaView, MateriaTaView,
NumeracaoEditView, NumeracaoView, OrgaoCrud, NumeracaoEditView, NumeracaoView, OrgaoCrud,
OrigemCrud, PesquisaMateriaListView, OrigemCrud, ProposicaoEditView, ProposicaoListView,
ProposicaoEditView, ProposicaoListView,
ProposicaoTaView, ProposicaoView, ProposicaoTaView, ProposicaoView,
RegimeTramitacaoCrud, RelatoriaEditView, RegimeTramitacaoCrud, RelatoriaEditView,
RelatoriaView, StatusTramitacaoCrud, TipoAutorCrud, RelatoriaView, StatusTramitacaoCrud, TipoAutorCrud,
@ -99,8 +98,6 @@ urlpatterns = [
ProposicaoEditView.as_view(), name='editar_proposicao'), ProposicaoEditView.as_view(), name='editar_proposicao'),
url(r'^materia/pesquisar-materia$', url(r'^materia/pesquisar-materia$',
MateriaLegislativaPesquisaView.as_view(), name='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<pk>\d+)/acompanhar-materia/$', url(r'^materia/(?P<pk>\d+)/acompanhar-materia/$',
AcompanhamentoMateriaView.as_view(), name='acompanhar_materia'), AcompanhamentoMateriaView.as_view(), name='acompanhar_materia'),
url(r'^materia/(?P<pk>\d+)/acompanhar-confirmar$', url(r'^materia/(?P<pk>\d+)/acompanhar-confirmar$',

154
materia/views.py

@ -8,7 +8,6 @@ from django.contrib import messages
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.core.mail import send_mail from django.core.mail import send_mail
from django.core.urlresolvers import reverse, reverse_lazy from django.core.urlresolvers import reverse, reverse_lazy
from django.db.models import Max
from django.http.response import HttpResponseRedirect from django.http.response import HttpResponseRedirect
from django.shortcuts import redirect from django.shortcuts import redirect
from django.template import Context, loader from django.template import Context, loader
@ -26,9 +25,12 @@ from sapl.utils import get_base_url
from .forms import (AcompanhamentoMateriaForm, AutoriaForm, from .forms import (AcompanhamentoMateriaForm, AutoriaForm,
DespachoInicialForm, DocumentoAcessorioForm, DespachoInicialForm, DocumentoAcessorioForm,
FormularioCadastroForm, FormularioSimplificadoForm, FormularioCadastroForm, FormularioSimplificadoForm,
filtra_tramitacao_status, filtra_tramitacao_destino,
filtra_tramitacao_destino_and_status,
LegislacaoCitadaForm, MateriaAnexadaForm, LegislacaoCitadaForm, MateriaAnexadaForm,
MateriaLegislativaPesquisaFields, NumeracaoForm, MateriaLegislativaPesquisaFields, NumeracaoForm,
ProposicaoForm, RelatoriaForm, TramitacaoForm) ProposicaoForm, RelatoriaForm, TramitacaoForm
)
from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria, from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria,
DespachoInicial, DocumentoAcessorio, MateriaLegislativa, DespachoInicial, DocumentoAcessorio, MateriaLegislativa,
Numeracao, Orgao, Origem, Proposicao, RegimeTramitacao, Numeracao, Orgao, Origem, Proposicao, RegimeTramitacao,
@ -1190,136 +1192,12 @@ class ProposicaoListView(ListView):
return context return context
# class MateriaLegislativaPesquisaView(FormView):
# template_name = 'materia/pesquisa_materia.html'
# def get_success_url(self):
# return reverse('pesquisar_materia')
# def get(self, request, *args, **kwargs):
# form = MateriaLegislativaPesquisaForm()
# return self.render_to_response({'form': form})
# def post(self, request, *args, **kwargs):
# kwargs = {}
# form = MateriaLegislativaPesquisaForm(request.POST)
# if form.data['tipo']:
# kwargs['tipo'] = form.data['tipo']
# if form.data['numero']:
# kwargs['numero'] = form.data['numero']
# if form.data['ano']:
# kwargs['ano'] = form.data['ano']
# if form.data['numero_protocolo']:
# kwargs['numero_protocolo'] = form.data['numero_protocolo']
# if (form.data['apresentacao_inicial'] and
# form.data['apresentacao_final']):
# kwargs['apresentacao_inicial'] = form.data['apresentacao_inicial']
# kwargs['apresentacao_final'] = form.data['apresentacao_final']
# if (form.data['publicacao_inicial'] and
# form.data['publicacao_final']):
# kwargs['publicacao_inicial'] = form.data['publicacao_inicial']
# kwargs['publicacao_final'] = form.data['publicacao_final']
# if form.data['local_origem_externa']:
# kwargs['local_origem_externa'] = form.data['local_origem_externa']
# if form.data['autor']:
# kwargs['autor'] = form.data['autor']
# if form.data['localizacao']:
# kwargs['localizacao'] = form.data['localizacao']
# if form.data['em_tramitacao']:
# kwargs['em_tramitacao'] = form.data['em_tramitacao']
# if form.data['situacao']:
# kwargs['situacao'] = form.data['situacao']
# request.session['kwargs'] = kwargs
# return redirect('pesquisar_materia_list')
class PesquisaMateriaListView(ListView):
template_name = 'materia/pesquisa_materia_list.html'
context_object_name = 'materias'
model = MateriaLegislativa
paginate_by = 10
def get_queryset(self):
kwargs = self.request.session['kwargs']
materias = MateriaLegislativa.objects.all().order_by(
'-numero', '-ano')
if 'apresentacao_inicial' in kwargs:
inicial = datetime.strptime(
kwargs['apresentacao_inicial'],
'%d/%m/%Y').strftime('%Y-%m-%d')
final = datetime.strptime(
kwargs['apresentacao_final'],
'%d/%m/%Y').strftime('%Y-%m-%d')
materias = materias.filter(
data_apresentacao__range=(inicial, final))
if 'publicacao_inicial' in kwargs:
inicial = datetime.strptime(
kwargs['publicacao_inicial'],
'%d/%m/%Y').strftime('%Y-%m-%d')
final = datetime.strptime(
kwargs['publicacao_final'],
'%d/%m/%Y').strftime('%Y-%m-%d')
materias = materias.filter(
data_publicacao__range=(inicial, final))
if 'tipo' in kwargs:
materias = materias.filter(tipo_id=kwargs['tipo'])
if 'numero' in kwargs:
materias = materias.filter(numero=kwargs['numero'])
if 'ano' in kwargs:
materias = materias.filter(ano=kwargs['ano'])
if 'numero_protocolo' in kwargs:
materias = materias.filter(numero=kwargs['numero_protocolo'])
if 'em_tramitacao' in kwargs:
materias = materias.filter(em_tramitacao=kwargs['em_tramitacao'])
if 'local_origem_externa' in kwargs:
materias = materias.filter(
local_origem_externa=kwargs['local_origem_externa'])
# autor
# localizao atual
# situacao
return materias
def filter_tramitacao__status(status):
ultimas_tramitacoes = Tramitacao.objects.values(
'materia_id').annotate(data_encaminhamento=Max(
'data_encaminhamento'),
id=Max('id'))
import ipdb; ipdb.set_trace()
ultimas_tramitacoes = ultimas_tramitacoes.filter(status=status)
return ultimas_tramitacoes
class MateriaLegislativaPesquisaView(FilterView): class MateriaLegislativaPesquisaView(FilterView):
model = MateriaLegislativa model = MateriaLegislativa
filterset_class = MateriaLegislativaPesquisaFields filterset_class = MateriaLegislativaPesquisaFields
paginate_by = 10 paginate_by = 10
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
# import ipdb; ipdb.set_trace()
context = super(MateriaLegislativaPesquisaView, context = super(MateriaLegislativaPesquisaView,
self).get_context_data(**kwargs) self).get_context_data(**kwargs)
@ -1333,15 +1211,29 @@ class MateriaLegislativaPesquisaView(FilterView):
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
filterset_class = self.get_filterset_class() filterset_class = self.get_filterset_class()
self.filterset = self.get_filterset(filterset_class) self.filterset = self.get_filterset(filterset_class)
status_tramitacao = self.filterset.data.get('tramitacao__status') status_tramitacao = self.filterset.data.get('tramitacao__status')
if status_tramitacao and status_tramitacao != '': unidade_destino = self.filterset.data.get(
status = filter_tramitacao__status(status_tramitacao) 'tramitacao__unidade_tramitacao_destino')
mat_filt_ids = [ids.get('materia_id') for ids in status] if (status_tramitacao and status_tramitacao != '' and
# import ipdb; ipdb.set_trace() unidade_destino and unidade_destino != ''):
lista = filtra_tramitacao_destino_and_status(status_tramitacao,
unidade_destino)
self.object_list = self.filterset.qs.filter( self.object_list = self.filterset.qs.filter(
id__in=mat_filt_ids) id__in=lista)
elif status_tramitacao and status_tramitacao != '':
lista = filtra_tramitacao_status(status_tramitacao)
self.object_list = self.filterset.qs.filter(
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: else:
self.object_list = self.filterset.qs self.object_list = self.filterset.qs
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)
return self.render_to_response(context) return self.render_to_response(context)

Loading…
Cancel
Save