Browse Source

Adaptando pagina de parlamentar para vuejs Fix #3030

pull/3048/head
ulyssesBML 6 years ago
parent
commit
8e66120d9a
  1. 10
      sapl/parlamentares/urls.py
  2. 46
      sapl/parlamentares/views.py
  3. 82
      sapl/templates/parlamentares/parlamentares_list.html

10
sapl/parlamentares/urls.py

@ -20,7 +20,8 @@ from sapl.parlamentares.views import (CargoMesaCrud, ColigacaoCrud,
remove_parlamentar_composicao,
parlamentares_filiados, BlocoCrud,
PesquisarParlamentarView, VincularParlamentarView,
get_sessoes_legislatura, get_all_legislaturas_json)
get_sessoes_legislatura, get_all_legislaturas_json,
get_parlamentare_by_legislaturas_json, search_parlamentare_json)
from .apps import AppConfig
@ -97,4 +98,11 @@ urlpatterns = [
url(r'^parlamentar/get-all-legislaturas_json/$',
get_all_legislaturas_json, name='get-all-legislaturas_json'),
url(r'^parlamentar/get_parlamentare_by_legislaturas_json/(?P<id_legislatura>\d+)/$',
get_parlamentare_by_legislaturas_json, name='get_parlamentare_by_legislaturas_json/'),
url(r'^parlamentar/search_parlamentare_json/$',
search_parlamentare_json, name='search_parlamentare_json'),
]

46
sapl/parlamentares/views.py

@ -1,6 +1,7 @@
from datetime import datetime
import json
import logging
import os
from django.contrib import messages
from django.contrib.auth.mixins import PermissionRequiredMixin
@ -32,7 +33,7 @@ from sapl.crud.base import (RP_CHANGE, RP_DETAIL, RP_LIST, Crud, CrudAux,
MasterDetailCrud, make_pagination)
from sapl.materia.models import Autoria, Proposicao, Relatoria
from sapl.parlamentares.apps import AppConfig
from sapl.utils import (parlamentares_ativos, show_results_filter_set)
from sapl.utils import (parlamentares_ativos, show_results_filter_set,filiacao_data)
from .forms import (FiliacaoForm, FrenteForm, LegislaturaForm, MandatoForm,
ParlamentarCreateForm, ParlamentarForm, VotanteForm,
@ -1207,5 +1208,44 @@ def get_sessoes_legislatura(request):
return JsonResponse(json_response)
def get_all_legislaturas_json(request):
all_legislaturas = [(str(e),e.id) for e in Legislatura.objects.all()]
return JsonResponse({'legislaturas':all_legislaturas})
all_legislaturas = [(e.id,str(e)) for e in Legislatura.objects.all()]
return JsonResponse({'legislaturas':all_legislaturas})
def get_parlamentare_by_legislaturas_json(request,id_legislatura):
id_parlamentares = Mandato.objects.filter(legislatura__id=id_legislatura).values_list('parlamentar__id','titular','data_inicio_mandato','data_fim_mandato').distinct()
parlamentares = Parlamentar.objects.filter(id__in=[i[0] for i in id_parlamentares])
my_json = []
for i, p in enumerate(parlamentares):
p_dict = {}
p_dict['parlamentar_id'] = p.id
p_dict['fotografia'] = p.fotografia.url if (p.fotografia and os.path.exists(p.fotografia.path)) else ""
p_dict['nome_parlamentar'] = p.nome_parlamentar
p_dict['partido'] = filiacao_data(p,id_parlamentares[i][2],id_parlamentares[i][3])
p_dict['ativo'] = p.ativo
p_dict['titular'] = id_parlamentares[i][1]
my_json.append(p_dict)
return JsonResponse({'parlamentares':my_json})
def search_parlamentare_json(request):
my_json = []
if request.method == 'GET':
pass
elif request.method == 'POST':
nome = request.POST.get("nome","")
parlamentares = Parlamentar.objects.filter(nome_parlamentar__icontains=nome)
for p in parlamentares:
p_dict = {}
p_dict['parlamentar_id'] = p.id
p_dict['fotografia'] = p.fotografia.url if (p.fotografia and os.path.exists(p.fotografia.path)) else ""
p_dict['nome_parlamentar'] = p.nome_parlamentar
p_dict['partido'] = p.filiacao_atual
p_dict['ativo'] = p.ativo
p_dict['titular'] = None
my_json.append(p_dict)
return JsonResponse({'parlamentares': my_json})

82
sapl/templates/parlamentares/parlamentares_list.html

@ -7,39 +7,83 @@
{% block base_content %}
<div id="app2">
<div class="actions btn-group float-right btn-group-sm" role="group">
<a href="{% url 'sapl.parlamentares:pesquisar_parlamentar' %}" class="btn btn-outline-primary">Pesquisar Parlamentar</a>
<div style="margin-bottom:20px" class="actions btn-group float-right btn-group-sm" role="group">
<a v-if="is_pesquisa" v-on:click="pesquisaChange" class="btn btn-primary text-white">Listar Parlamentar</a>
<a v-else v-on:click="pesquisaChange" class="btn btn-outline-primary text-info">Pesquisar Parlamentar</a>
{% if not request.user.is_anonymous %}
<a href="{% url 'sapl.parlamentares:vincular_parlamentar' %}" class="btn btn-outline-primary">Vincular Parlamentar</a>
{% endif %}
{% block more_buttons %}{% endblock more_buttons %}
</div>
<!--Pesquisa parlamentares-->
<div v-if="is_pesquisa">
<h2>Pesquisa Parlamentar</h2>
<div class="input-group input-group-lg">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroup-sizing-lg">Pesquisa</span>
</div>
<input v-model="nome_pesquisa" type="text" class="form-control" aria-label="Pesquisa" aria-describedby="inputGroup-sizing-sm">
</div>
</div>
<!--Lista parlamentares-->
<div v-else>
<fieldset class="form-group">
<legend>Selecione o Período</legend>
<form method="GET">
<div id="app2">
<select class="form-control" v-model="legislatura_selecionada">
<option v-for="option in legislaturas" v-bind:value="option[1]">
[[ option[0] ]]
<select @change="getParlamentares" class="form-control" v-model="legislatura_selecionada">
<option v-for="option in legislaturas" v-bind:value="option[0]">
[[ option[1] ]]
</option>
</select>
</div>
<select name="pk" class="form-control" onChange="form.submit();">
{% for l in legislaturas %}
<option value="{{l.id}}" {% if l.id == legislatura_id %} selected {% endif %}>
{{l}}
</option>
{% endfor %}
</select>
</form>
</fieldset>
<br/>
</div>
<div class="container-table lista-parlamentares">
<div class="result-count">Total de Parlamentares: <strong>[[parlamentares.length]]</strong></div>
<table class="table table-striped table-hover table-link-ordering">
<thead>
<tr>
{% for name in headers %}
{% if forloop.first %}
<th colspan=2>
{% else %}
<th>
{% endif %}
{{ name }}
</th>
{% endfor %}
</tr>
</thead>
<tbody>
<tr v-for="parlamentar in parlamentares">
<th>
<img class="img-fluid img-thumbnail" v-bind:src="parlamentar.fotografia" @error="(() => parlamentar.fotografia = '')"/>
</th>
<th>
<a v-bind:href="'/parlamentar/'+parlamentar.parlamentar_id">[[ parlamentar.nome_parlamentar]]</a>
</th>
<th>
[[ parlamentar.partido ]]
</th>
<th>
<p v-if="[[ parlamentar.ativo ]]">Sim</p>
<p v-else>Não</p>
</th>
<th>
<p v-if="[[ parlamentar.titular ]]">Sim</p>
<p v-else>Não</p>
</th>
</tr>
</tbody>
</table>
</div>
<!--
{% if not rows %}
<p>{{ NO_ENTRIES_MSG }}</p>
{% else %}
@ -85,7 +129,9 @@
</tbody>
</table>
</div>
{% endif %}
</div>
{% endif %}-->
{% endblock base_content %}

Loading…
Cancel
Save