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, remove_parlamentar_composicao,
parlamentares_filiados, BlocoCrud, parlamentares_filiados, BlocoCrud,
PesquisarParlamentarView, VincularParlamentarView, 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 from .apps import AppConfig
@ -97,4 +98,11 @@ urlpatterns = [
url(r'^parlamentar/get-all-legislaturas_json/$', url(r'^parlamentar/get-all-legislaturas_json/$',
get_all_legislaturas_json, name='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 from datetime import datetime
import json import json
import logging import logging
import os
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.mixins import PermissionRequiredMixin 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) MasterDetailCrud, make_pagination)
from sapl.materia.models import Autoria, Proposicao, Relatoria from sapl.materia.models import Autoria, Proposicao, Relatoria
from sapl.parlamentares.apps import AppConfig 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, from .forms import (FiliacaoForm, FrenteForm, LegislaturaForm, MandatoForm,
ParlamentarCreateForm, ParlamentarForm, VotanteForm, ParlamentarCreateForm, ParlamentarForm, VotanteForm,
@ -1207,5 +1208,44 @@ def get_sessoes_legislatura(request):
return JsonResponse(json_response) return JsonResponse(json_response)
def get_all_legislaturas_json(request): def get_all_legislaturas_json(request):
all_legislaturas = [(str(e),e.id) for e in Legislatura.objects.all()] all_legislaturas = [(e.id,str(e)) for e in Legislatura.objects.all()]
return JsonResponse({'legislaturas':all_legislaturas}) 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 %} {% block base_content %}
<div id="app2">
<div class="actions btn-group float-right btn-group-sm" role="group"> <div style="margin-bottom:20px" 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> <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 %} {% if not request.user.is_anonymous %}
<a href="{% url 'sapl.parlamentares:vincular_parlamentar' %}" class="btn btn-outline-primary">Vincular Parlamentar</a> <a href="{% url 'sapl.parlamentares:vincular_parlamentar' %}" class="btn btn-outline-primary">Vincular Parlamentar</a>
{% endif %} {% endif %}
{% block more_buttons %}{% endblock more_buttons %} {% block more_buttons %}{% endblock more_buttons %}
</div> </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"> <fieldset class="form-group">
<legend>Selecione o Período</legend> <legend>Selecione o Período</legend>
<form method="GET"> <form method="GET">
<select @change="getParlamentares" class="form-control" v-model="legislatura_selecionada">
<div id="app2"> <option v-for="option in legislaturas" v-bind:value="option[0]">
<select class="form-control" v-model="legislatura_selecionada"> [[ option[1] ]]
<option v-for="option in legislaturas" v-bind:value="option[1]">
[[ option[0] ]]
</option> </option>
</select> </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> </form>
</fieldset> </fieldset>
<br/> <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 %} {% if not rows %}
<p>{{ NO_ENTRIES_MSG }}</p> <p>{{ NO_ENTRIES_MSG }}</p>
{% else %} {% else %}
@ -85,7 +129,9 @@
</tbody> </tbody>
</table> </table>
</div> </div>
{% endif %}
</div>
{% endif %}-->
{% endblock base_content %} {% endblock base_content %}

Loading…
Cancel
Save