Browse Source

Cria pesquisa de coligação (#3304)

Adiciona link para criação de coligação em tabelas auxiliares
pull/3303/head
Vinícius Cantuária 4 years ago
committed by GitHub
parent
commit
75d622d0d9
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 22
      sapl/parlamentares/forms.py
  2. 15
      sapl/parlamentares/urls.py
  3. 62
      sapl/parlamentares/views.py
  4. 9
      sapl/templates/menu_tabelas_auxiliares.yaml
  5. 13
      sapl/templates/parlamentares/coligacao_detail.html
  6. 51
      sapl/templates/parlamentares/coligacao_filter.html

22
sapl/parlamentares/forms.py

@ -22,7 +22,7 @@ from sapl.crispy_layout_mixin import form_actions, to_row
from sapl.rules import SAPL_GROUP_VOTANTE from sapl.rules import SAPL_GROUP_VOTANTE
import django_filters import django_filters
from .models import (ComposicaoColigacao, Filiacao, Frente, Legislatura, from .models import (Coligacao, ComposicaoColigacao, Filiacao, Frente, Legislatura,
Mandato, Parlamentar, Votante, Bloco, FrenteParlamentar) Mandato, Parlamentar, Votante, Bloco, FrenteParlamentar)
@ -251,6 +251,26 @@ class ParlamentarFilterSet(django_filters.FilterSet):
) )
class ColigacaoFilterSet(django_filters.FilterSet):
nome = django_filters.CharFilter(label=_('Nome da Coligação'), lookup_expr='icontains')
class Meta:
model = Coligacao
fields = ['nome']
def __init__(self, *args, **kwargs):
super(ColigacaoFilterSet, self).__init__(*args, **kwargs)
row0 = to_row([('nome', 12)])
self.form.helper = SaplFormHelper()
self.form.helper.form_method = 'GET'
self.form.helper.layout = Layout(
Fieldset(_('Pesquisa de Coligação'),
row0,
form_actions(label='Pesquisar')))
class ParlamentarCreateForm(ParlamentarForm): class ParlamentarCreateForm(ParlamentarForm):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

15
sapl/parlamentares/urls.py

@ -22,7 +22,7 @@ from sapl.parlamentares.views import (CargoMesaCrud, ColigacaoCrud,
parlamentares_filiados, BlocoCrud, parlamentares_filiados, BlocoCrud,
PesquisarParlamentarView, VincularParlamentarView, PesquisarParlamentarView, VincularParlamentarView,
get_sessoes_legislatura, FrenteCargoCrud, FrenteParlamentarCrud, get_sessoes_legislatura, FrenteCargoCrud, FrenteParlamentarCrud,
get_parlamentar_frentes) get_parlamentar_frentes, PesquisarColigacaoView)
from .apps import AppConfig from .apps import AppConfig
@ -49,14 +49,11 @@ urlpatterns = [
url(r'^parlamentar/vincular-parlamentar/$', url(r'^parlamentar/vincular-parlamentar/$',
VincularParlamentarView.as_view(), name='vincular_parlamentar'), VincularParlamentarView.as_view(), name='vincular_parlamentar'),
url(r'^parlamentar/coligacao-legislatura/', url(r'^parlamentar/coligacao-legislatura/', coligacao_legislatura, name="coligacao_legislatura"),
coligacao_legislatura, name="coligacao_legislatura"), url(r'^sistema/coligacao/', include(ColigacaoCrud.get_urls() + ComposicaoColigacaoCrud.get_urls())),
url(r'^sistema/pesquisar-coligacao/', PesquisarColigacaoView.as_view(), name='pesquisar_coligacao'),
url(r'^sistema/coligacao/',
include(ColigacaoCrud.get_urls() + url(r'^sistema/bloco/', include(BlocoCrud.get_urls())),
ComposicaoColigacaoCrud.get_urls())),
url(r'^sistema/bloco/',
include(BlocoCrud.get_urls())),
url(r'^sistema/frente/', include(FrenteCrud.get_urls())), url(r'^sistema/frente/', include(FrenteCrud.get_urls())),
url(r'^sistema/frente-cargo/', include(FrenteCargoCrud.get_urls())), url(r'^sistema/frente-cargo/', include(FrenteCargoCrud.get_urls())),

62
sapl/parlamentares/views.py

@ -33,7 +33,7 @@ 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)
from .forms import (FiliacaoForm, FrenteForm, LegislaturaForm, MandatoForm, from .forms import (ColigacaoFilterSet, FiliacaoForm, FrenteForm, LegislaturaForm, MandatoForm,
ParlamentarCreateForm, ParlamentarForm, VotanteForm, ParlamentarCreateForm, ParlamentarForm, VotanteForm,
ParlamentarFilterSet, VincularParlamentarForm, ParlamentarFilterSet, VincularParlamentarForm,
BlocoForm, FrenteParlamentarForm) BlocoForm, FrenteParlamentarForm)
@ -230,6 +230,55 @@ class PesquisarParlamentarView(FilterView):
return self.render_to_response(context) return self.render_to_response(context)
class PesquisarColigacaoView(FilterView):
model = Coligacao
filterset_class = ColigacaoFilterSet
paginate_by = 10
def get_filterset_kwargs(self, filterset_class):
super(PesquisarColigacaoView, self).get_filterset_kwargs(filterset_class)
return ({
'data': self.request.GET or None,
'queryset': self.get_queryset().order_by('nome').distinct()
})
def get_context_data(self, **kwargs):
context = super(PesquisarColigacaoView, self).get_context_data(**kwargs)
paginator = context['paginator']
page_obj = context['page_obj']
context.update({
'page_range': make_pagination(page_obj.number, paginator.num_pages),
'NO_ENTRIES_MSG': 'Nenhuma coligação encontrada!',
'title': _('Coligações')
})
return context
def get(self, request, *args, **kwargs):
super(PesquisarColigacaoView, self).get(request)
data = self.filterset.data
url = ''
if data:
url = "&" + str(self.request.META['QUERY_STRING'])
if url.startswith("&page"):
ponto_comeco = url.find('nome=') - 1
url = url[ponto_comeco:]
context = self.get_context_data(filter=self.filterset,
object_list=self.object_list,
filter_url=url,
numero_res=len(self.object_list))
context['show_results'] = show_results_filter_set(self.request.GET.copy())
return self.render_to_response(context)
class ParticipacaoParlamentarCrud(CrudBaseForListAndDetailExternalAppView): class ParticipacaoParlamentarCrud(CrudBaseForListAndDetailExternalAppView):
model = Participacao model = Participacao
parent_field = 'parlamentar' parent_field = 'parlamentar'
@ -297,8 +346,7 @@ class ColigacaoCrud(CrudAux):
if not coligacao.numero_votos: if not coligacao.numero_votos:
coligacao.numero_votos = '0' coligacao.numero_votos = '0'
context['subnav_template_name'] = \ context['subnav_template_name'] = 'parlamentares/subnav_coligacao.yaml'
'parlamentares/subnav_coligacao.yaml'
return context return context
@ -306,12 +354,14 @@ class ColigacaoCrud(CrudAux):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(UpdateView, self).get_context_data(kwargs=kwargs) context = super(UpdateView, self).get_context_data(kwargs=kwargs)
context['subnav_template_name'] = 'parlamentares/subnav_coligacao.yaml'
context['subnav_template_name'] = \
'parlamentares/subnav_coligacao.yaml'
return context return context
class DeleteView(CrudAux.DeleteView):
def get_success_url(self):
return reverse('sapl.parlamentares:pesquisar_coligacao')
def coligacao_legislatura(request): def coligacao_legislatura(request):
try: try:

9
sapl/templates/menu_tabelas_auxiliares.yaml

@ -41,12 +41,15 @@
- title: {% trans 'Nível de Instrução' %} - title: {% trans 'Nível de Instrução' %}
url: sapl.parlamentares:nivelinstrucao_list url: sapl.parlamentares:nivelinstrucao_list
css_class: btn btn-link css_class: btn btn-link
- title: {% trans 'Pesquisar Coligação' %}
url: sapl.parlamentares:pesquisar_coligacao
css_class: btn btn-link
- title: {% trans 'Adicionar Coligação' %}
url: sapl.parlamentares:coligacao_create
css_class: btn btn-link
- title: {% trans 'Partido' %} - title: {% trans 'Partido' %}
url: sapl.parlamentares:partido_list url: sapl.parlamentares:partido_list
css_class: btn btn-link css_class: btn btn-link
- title: {% trans 'Coligação' %}
url: sapl.parlamentares:coligacao_list
css_class: btn btn-link
- title: {% trans 'Módulo Mesa Diretora' %} - title: {% trans 'Módulo Mesa Diretora' %}
css_class: head_title css_class: head_title
children: children:

13
sapl/templates/parlamentares/coligacao_detail.html

@ -0,0 +1,13 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags cropping %}
{% block actions %}
<div class="actions btn-group btn-group-sm" role="group">
<a href="{% url 'sapl.parlamentares:pesquisar_coligacao' %}" class="btn btn-outline-primary">Pesquisar Coligação</a>
<a href="{% url 'sapl.parlamentares:coligacao_create' %}" class="btn btn-outline-primary">Adicionar Coligação</a>
</div>
<div class="actions btn-group btn-group-sm float-right" role="group">
<a href="{% url 'sapl.parlamentares:coligacao_update' object.pk %}" class="btn btn-outline-primary">Editar</a>
<a href="{% url 'sapl.parlamentares:coligacao_delete' object.pk %}" class="btn btn-outline-danger">Excluir</a>
</div>
{% endblock actions %}

51
sapl/templates/parlamentares/coligacao_filter.html

@ -0,0 +1,51 @@
{% extends "crud/list.html" %}
{% load i18n %}
{% load crispy_forms_tags staticfiles %}
{% block base_content %}
{% if not show_results %}
{% crispy filter.form %}
{% else %}
<div class="actions btn-group float-right btn-group-sm" role="group">
<a href="{% url 'sapl.parlamentares:pesquisar_coligacao' %}" class="btn btn-outline-primary">{% trans 'Fazer nova pesquisa' %}</a>
{% if not request.user.is_anonymous %}
<a href="{% url 'sapl.parlamentares:coligacao_create' %}"class="btn btn-outline-primary">Adicionar Coligação</a>
{% endif %}
</div>
<br>
{% if numero_res > 0 %}
{% if numero_res == 1 %}
<p>Foi encontrado {{ numero_res }} resultado.</p>
{% else %}
<p>Foram encontrados {{ numero_res }} resultados.</p>
{% endif %}
<table class="table table-striped table-hover">
<thead>
<tr>
<th>Nome da Coligação</th>
<th>Legislatura</th>
<th>Número de Votos</th>
</tr>
</thead>
<tbody>
{% for coligacao in page_obj %}
<tr>
<td>
<a href="{% url 'sapl.parlamentares:coligacao_detail' coligacao.pk %}">{{coligacao.nome}}</a>
</td>
<td>
<a href="{% url 'sapl.parlamentares:legislatura_detail' coligacao.legislatura.pk %}">{{coligacao.legislatura}}</a>
</td>
<td>{% if coligacao.numero_votos %} {{ coligacao.numero_votos }} {% else %} - {% endif %}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<font size="4"><p align="center">{{ NO_ENTRIES_MSG }}</p></font>
{% endif %}
{% endif %}
<br/>
{% include 'paginacao.html'%}
<br /><br /><br />
{% endblock base_content %}
Loading…
Cancel
Save