Browse Source

Cria logica para mostrar somente os ativos

pull/1267/head
Eduardo Calil 9 years ago
parent
commit
e45d56a5a5
  1. 4
      sapl/parlamentares/urls.py
  2. 73
      sapl/parlamentares/views.py
  3. 53
      sapl/templates/parlamentares/frente_form.html

4
sapl/parlamentares/urls.py

@ -15,6 +15,7 @@ from sapl.parlamentares.views import (CargoMesaCrud, ColigacaoCrud,
TipoMilitarCrud, VotanteView, TipoMilitarCrud, VotanteView,
altera_field_mesa, altera_field_mesa,
altera_field_mesa_public_view, altera_field_mesa_public_view,
frente_atualiza_lista_parlamentares,
insere_parlamentar_composicao, insere_parlamentar_composicao,
remove_parlamentar_composicao) remove_parlamentar_composicao)
@ -40,6 +41,9 @@ urlpatterns = [
ComposicaoColigacaoCrud.get_urls())), ComposicaoColigacaoCrud.get_urls())),
url(r'^sistema/frente/', url(r'^sistema/frente/',
include(FrenteCrud.get_urls())), include(FrenteCrud.get_urls())),
url(r'^sistema/frente/atualiza-lista-parlamentares',
frente_atualiza_lista_parlamentares,
name='atualiza_lista_parlamentares'),
url(r'^sistema/parlamentar/legislatura/', url(r'^sistema/parlamentar/legislatura/',
include(LegislaturaCrud.get_urls())), include(LegislaturaCrud.get_urls())),
url(r'^sistema/parlamentar/tipo-dependente/', url(r'^sistema/parlamentar/tipo-dependente/',

73
sapl/parlamentares/views.py

@ -30,6 +30,10 @@ from sapl.materia.models import Autoria
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.db.models.aggregates import Count from django.db.models.aggregates import Count
import datetime
import json
CargoMesaCrud = CrudAux.build(CargoMesa, 'cargo_mesa') CargoMesaCrud = CrudAux.build(CargoMesa, 'cargo_mesa')
PartidoCrud = CrudAux.build(Partido, 'partidos') PartidoCrud = CrudAux.build(Partido, 'partidos')
SessaoLegislativaCrud = CrudAux.build(SessaoLegislativa, 'sessao_legislativa') SessaoLegislativaCrud = CrudAux.build(SessaoLegislativa, 'sessao_legislativa')
@ -208,20 +212,67 @@ class ColigacaoCrud(CrudAux):
subnav_template_name = 'parlamentares/subnav_coligacao.yaml' subnav_template_name = 'parlamentares/subnav_coligacao.yaml'
def frente_lista_parlamentar(request): def json_date_convert(date):
presencas = model.objects.filter( '''
sessao_plenaria=sessao) :param date: recebe a data de uma chamada ajax no formato de
string "dd/mm/yyyy"
:return:
'''
dia, mes, ano = date.split('/')
return datetime.date(day=int(dia),
month=int(mes),
year=int(ano))
def parlamentares_ativos(data_inicio, data_fim=None):
'''
:param data_inicio: define a data de inicial do período desejado
:param data_fim: define a data final do período desejado
:return: queryset dos parlamentares ativos naquele período
'''
mandatos_ativos = Mandato.objects.filter(Q(
data_inicio_mandato__lte=data_inicio,
data_fim_mandato__isnull=True))
if data_fim:
mandatos_ativos = mandatos_ativos | Mandato.objects.filter(Q(
data_inicio_mandato__lte=data_inicio,
data_fim_mandato__gte=data_inicio) | Q(
data_inicio_mandato__gte=data_inicio,
data_inicio_mandato__lte=data_fim))
else:
mandatos_ativos = mandatos_ativos | Mandato.objects.filter(
data_inicio_mandato__gte=data_inicio)
parlamentares_id = mandatos_ativos.values_list(
'parlamentar_id',
flat=True).distinct('parlamentar_id')
presentes = [p.parlamentar for p in presencas] return Parlamentar.objects.filter(id__in=parlamentares_id)
mandato = Mandato.objects.filter(
legislatura=legislatura).order_by('parlamentar__nome_parlamentar')
for m in mandato: def frente_atualiza_lista_parlamentares(request):
if m.parlamentar in presentes: '''
yield (m.parlamentar, True) :param request: recebe os parâmetros do GET da chamada Ajax
else: :return: retorna a lista atualizada dos parlamentares
yield (m.parlamentar, False) '''
ativos = json.loads(request.GET['ativos'])
parlamentares = Parlamentar.objects.all()
if ativos:
if 'data_criacao' in request.GET and request.GET['data_criacao']:
data_criacao = json_date_convert(request.GET['data_criacao'])
if 'data_extincao' in request.GET and request.GET['data_extincao']:
data_extincao = json_date_convert(request.GET['data_extincao'])
parlamentares = parlamentares_ativos(data_criacao,
data_extincao)
else:
parlamentares = parlamentares_ativos(data_criacao)
parlamentares_list = [(p.id, p.__str__()) for p in parlamentares]
return JsonResponse({'parlamentares_list': parlamentares_list})
class FrenteCrud(CrudAux): class FrenteCrud(CrudAux):

53
sapl/templates/parlamentares/frente_form.html

@ -22,9 +22,20 @@
</div> </div>
</div> </div>
<div class="row-fluid"> <div id="div_parlamentares" style="display: none">
<div class="col-md-12" > <div class="row-fluid">
{{ form.parlamentares|as_crispy_field }} <div class="col-md-12" >
<div class="checkbox">
<input id="id_selecionar_ativos" type="checkbox">
<b><h4>Listar somente os parlamentares ativos</h4></b>
</div>
</div>
</div>
<div class="row-fluid">
<div class="col-md-12" >
{{ form.parlamentares|as_crispy_field }}
</div>
</div> </div>
</div> </div>
@ -48,12 +59,39 @@
// var ativos; // var ativos;
var data_criacao = $("#id_data_criacao").val(); var data_criacao = $("#id_data_criacao").val();
var data_extincao = $("#id_data_extincao").val(); var data_extincao = $("#id_data_extincao").val();
var ativos = $('#id_selecionar_ativos').prop('checked');
if (data_criacao == '') { if (data_criacao === '') {
$('#div_id_parlamentares').hide(); $('#div_parlamentares').hide();
} }
else{ else{
$('#div_id_parlamentares').show(); $('#div_parlamentares').show();
// Limpa a listagem para atualizar
$("#id_parlamentares option").remove();
$.get("/sistema/frente/atualiza-lista-parlamentares",
{data_criacao: data_criacao,
data_extincao: data_extincao,
ativos: ativos},
function(data){
// Caso não venha nenhum dado da requisição, retorna null
if ($.isEmptyObject(data)){
return null
}
lista_parlamentares = data['parlamentares_list'];
console.log(lista_parlamentares.length)
// Atualiza a listagem de parlamentares
for (i = 0; i < lista_parlamentares.length; i++) {
$('#id_parlamentares').append(
'<option value="' + lista_parlamentares[i][0] + '">' +
lista_parlamentares[i][1] + '</option>');
}
}
);
} }
@ -68,6 +106,9 @@
}); });
$("#id_data_extincao").change(function () { $("#id_data_extincao").change(function () {
atualiza_parlamentares(); atualiza_parlamentares();
});
$("#id_selecionar_ativos").change(function () {
atualiza_parlamentares();
}); });
</script> </script>
{% endblock %} {% endblock %}

Loading…
Cancel
Save