Browse Source

Merge branch '3.1.x' into 2455-parlamentares-filiados-partido

pull/2567/head
Edward 7 years ago
committed by GitHub
parent
commit
3e53fdddcf
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      requirements/requirements.txt
  2. 24
      sapl/parlamentares/forms.py
  3. 7
      sapl/parlamentares/urls.py
  4. 65
      sapl/parlamentares/views.py
  5. 17
      sapl/templates/materia/impressos/ficha_adm_pdf.html
  6. 31
      sapl/templates/norma/normajuridica_form.html
  7. 49
      sapl/templates/parlamentares/parlamentar_filter.html
  8. 6
      sapl/templates/parlamentares/parlamentares_list.html

1
requirements/requirements.txt

@ -24,6 +24,7 @@ rtyaml==0.0.5
python-magic==0.4.15 python-magic==0.4.15
unipath==1.1 unipath==1.1
WeasyPrint==44 WeasyPrint==44
Pillow==5.1.0
gunicorn==19.9.0 gunicorn==19.9.0
textract==1.5.0 textract==1.5.0

24
sapl/parlamentares/forms.py

@ -20,6 +20,7 @@ from sapl.utils import FileFieldCheckMixin
from sapl.base.models import Autor, TipoAutor from sapl.base.models import Autor, TipoAutor
from sapl.crispy_layout_mixin import form_actions, to_row 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
from .models import (ComposicaoColigacao, Filiacao, Frente, Legislatura, from .models import (ComposicaoColigacao, Filiacao, Frente, Legislatura,
Mandato, Parlamentar, Votante) Mandato, Parlamentar, Votante)
@ -210,6 +211,29 @@ class ParlamentarForm(FileFieldCheckMixin, ModelForm):
attrs={'id': 'texto-rico'})} attrs={'id': 'texto-rico'})}
class ParlamentarFilterSet(django_filters.FilterSet):
nome_parlamentar = django_filters.CharFilter(
label=_('Nome do Parlamentar'),
lookup_expr='icontains')
class Meta:
model = Parlamentar
fields = ['nome_parlamentar']
def __init__(self, *args, **kwargs):
super(ParlamentarFilterSet, self).__init__(*args, **kwargs)
row0 = to_row([('nome_parlamentar', 12)])
self.form.helper = SaplFormHelper()
self.form.helper.form_method = 'GET'
self.form.helper.layout = Layout(
Fieldset(_('Pesquisa de Parlamentar'),
row0,
form_actions(label='Pesquisar'))
)
class ParlamentarCreateForm(ParlamentarForm): class ParlamentarCreateForm(ParlamentarForm):
legislatura = forms.ModelChoiceField( legislatura = forms.ModelChoiceField(

7
sapl/parlamentares/urls.py

@ -17,7 +17,9 @@ from sapl.parlamentares.views import (CargoMesaCrud, ColigacaoCrud,
frente_atualiza_lista_parlamentares, frente_atualiza_lista_parlamentares,
insere_parlamentar_composicao, insere_parlamentar_composicao,
parlamentares_frente_selected, parlamentares_frente_selected,
remove_parlamentar_composicao, parlamentares_filiados) remove_parlamentar_composicao,
parlamentares_filiados,
PesquisarParlamentarView)
from .apps import AppConfig from .apps import AppConfig
@ -33,6 +35,9 @@ urlpatterns = [
VotanteView.get_urls() VotanteView.get_urls()
)), )),
url(r'^parlamentar/pesquisar-parlamentar/',
PesquisarParlamentarView.as_view(), name='pesquisar_parlamentar'),
url(r'^parlamentar/(?P<pk>\d+)/materias$', url(r'^parlamentar/(?P<pk>\d+)/materias$',
ParlamentarMateriasView.as_view(), name='parlamentar_materias'), ParlamentarMateriasView.as_view(), name='parlamentar_materias'),

65
sapl/parlamentares/views.py

@ -18,20 +18,22 @@ from django.utils.translation import ugettext_lazy as _
from django.views.decorators.clickjacking import xframe_options_exempt from django.views.decorators.clickjacking import xframe_options_exempt
from django.views.generic import FormView from django.views.generic import FormView
from django.views.generic.edit import UpdateView from django.views.generic.edit import UpdateView
from django_filters.views import FilterView
from image_cropping.utils import get_backend from image_cropping.utils import get_backend
from sapl.base.forms import SessaoLegislativaForm, PartidoForm from sapl.base.forms import SessaoLegislativaForm, PartidoForm
from sapl.base.models import Autor from sapl.base.models import Autor
from sapl.comissoes.models import Participacao from sapl.comissoes.models import Participacao
from sapl.crud.base import (RP_CHANGE, RP_DETAIL, RP_LIST, Crud, CrudAux, from sapl.crud.base import (RP_CHANGE, RP_DETAIL, RP_LIST, Crud, CrudAux,
CrudBaseForListAndDetailExternalAppView, CrudBaseForListAndDetailExternalAppView,
MasterDetailCrud) 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 from sapl.utils import (parlamentares_ativos, show_results_filter_set)
from .forms import (FiliacaoForm, FrenteForm, LegislaturaForm, MandatoForm, from .forms import (FiliacaoForm, FrenteForm, LegislaturaForm, MandatoForm,
ParlamentarCreateForm, ParlamentarForm, VotanteForm) ParlamentarCreateForm, ParlamentarForm, VotanteForm, ParlamentarFilterSet)
from .models import (CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa, from .models import (CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa,
Dependente, Filiacao, Frente, Legislatura, Mandato, Dependente, Filiacao, Frente, Legislatura, Mandato,
NivelInstrucao, Parlamentar, Partido, SessaoLegislativa, NivelInstrucao, Parlamentar, Partido, SessaoLegislativa,
@ -165,6 +167,63 @@ class ProposicaoParlamentarCrud(CrudBaseForListAndDetailExternalAppView):
_('Texto Eletrônico')) _('Texto Eletrônico'))
class PesquisarParlamentarView(FilterView):
model = Parlamentar
filterset_class = ParlamentarFilterSet
paginate_by = 10
def get_filterset_kwargs(self, filterset_class):
super(PesquisarParlamentarView,
self).get_filterset_kwargs(filterset_class)
kwargs = {'data': self.request.GET or None}
qs = self.get_queryset().order_by('nome_parlamentar').distinct()
kwargs.update({
'queryset': qs,
})
return kwargs
def get_context_data(self, **kwargs):
context = super(PesquisarParlamentarView,
self).get_context_data(**kwargs)
paginator = context['paginator']
page_obj = context['page_obj']
context['page_range'] = make_pagination(
page_obj.number, paginator.num_pages)
context['NO_ENTRIES_MSG'] = 'Nenhum parlamentar encontrado!'
context['title'] = _('Parlamentares')
return context
def get(self, request, *args, **kwargs):
super(PesquisarParlamentarView, self).get(request)
data = self.filterset.data
url = ''
if data:
url = "&" + str(self.request.environ['QUERY_STRING'])
if url.startswith("&page"):
ponto_comeco = url.find('nome_parlamentar=') - 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'

17
sapl/templates/materia/impressos/ficha_adm_pdf.html

@ -91,16 +91,25 @@ body
</table> </table>
{% endif %} {% endif %}
<!-- Ementa --> <!-- Assunto -->
<table border=0> <table border=0>
<td> <td>
<div id="ementa_texto"> <div id="assunto_texto">
<strong class="text_pdf">Ementa:</strong> <span class="text_pdf">{{documento.assunto}}</span> <strong class="text_pdf">Assunto:</strong> <span class="text_pdf">{{documento.assunto}}</span>
</div> </div>
</td> </td>
</table> </table>
<!-- Interessado -->
{% if documento.interessado%}
<table border=0>
<td>
<div id="interessado_texto">
<strong class="text_pdf">Interessado:</strong> <span class="text_pdf">{{documento.interessado}}</span>
</div>
</td>
</table>
{% endif %}
</div> </div>
</justify> </justify>

31
sapl/templates/norma/normajuridica_form.html

@ -7,33 +7,34 @@
<script language="Javascript"> <script language="Javascript">
function recuperar_materia() { function recuperar_materia() {
var tipo_materia = $("#id_tipo_materia").val() var tipo_materia = $("#id_tipo_materia").val();
var numero_materia = $("#id_numero_materia").val() var numero_materia = $("#id_numero_materia").val();
var ano_materia = $("#id_ano_materia").val() var ano_materia = $("#id_ano_materia").val();
var tipo = $('#id_tipo').val() var tipo = $('#id_tipo').val();
var ano = $('#id_ano').val() var ano = $('#id_ano').val();
var numero = $('#id_numero').val() var numero = $('#id_numero').val();
var ementa = $('#id_ementa').val() var ementa = $('#id_ementa').val();
if (tipo_materia && numero_materia && ano_materia) { if (tipo_materia && numero_materia && ano_materia) {
if (ementa === undefined || ementa === "") { $.get("/sessao/recuperar-materia",
$.get("/sessao/recuperar-materia",{tipo_materia: tipo_materia, {tipo_materia: tipo_materia,
numero_materia: numero_materia, numero_materia: numero_materia,
ano_materia: ano_materia}, ano_materia: ano_materia},
function(data, status) { function(data, status) {
$("#id_ementa").val(data.ementa); $("#id_ementa").val(data.ementa);
$("#id_indexacao").val(data.indexacao); $("#id_indexacao").val(data.indexacao);
});
} }
);
}
} }
}
var fields = ["#id_tipo_materia", "#id_numero_materia", "#id_ano_materia"] var fields = ["#id_tipo_materia", "#id_numero_materia", "#id_ano_materia"]
for (i = 0; i < fields.length; i++) { for (i = 0; i < fields.length; i++) {
$(fields[i]).change(recuperar_materia); $(fields[i]).change(recuperar_materia);
} }
recuperar_materia();
function recuperar_norma() { function recuperar_norma() {
var tipo = $("#id_tipo").val() var tipo = $("#id_tipo").val();
var ano = $("#id_ano").val() var ano = $("#id_ano").val();
if (tipo) { if (tipo) {
$.get("/norma/recuperar-numero-norma",{tipo: tipo, $.get("/norma/recuperar-numero-norma",{tipo: tipo,
@ -44,7 +45,7 @@
}); });
} }
} }
var fields = ["#id_tipo", "#id_ano"] var fields = ["#id_tipo", "#id_ano"];
for (i = 0; i < fields.length; i++) { for (i = 0; i < fields.length; i++) {
$(fields[i]).change(recuperar_norma); $(fields[i]).change(recuperar_norma);
} }

49
sapl/templates/parlamentares/parlamentar_filter.html

@ -0,0 +1,49 @@
{% extends "crud/list.html" %}
{% load i18n %}
{% load crispy_forms_tags staticfiles %}
{% block base_content %}
{% if not show_results %}
{% crispy filter.form %}
{% endif %}
{% if show_results %}
<div class="actions btn-group float-right" role="group">
<a href="{% url 'sapl.parlamentares:pesquisar_parlamentar' %}" class="btn btn-outline-primary">{% trans 'Fazer nova pesquisa' %}</a>
</div>
<br /><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 do Parlamentar</th>
<th>Nome Completo</th>
<th>Ativo</th>
</tr>
</thead>
<tbody>
{% for usuario in page_obj %}
<tr>
<td>
<a href="{% url 'sapl.parlamentares:parlamentar_detail' usuario.pk %}">{{usuario.nome_parlamentar}}</a>
</td>
<td>{{ usuario.nome_completo }}</td>
<td>{% if usuario.ativo %} Sim {% else %} Não {% 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 %}

6
sapl/templates/parlamentares/parlamentares_list.html

@ -1,6 +1,12 @@
{% extends "crud/list.html" %} {% extends "crud/list.html" %}
{% load i18n %} {% load i18n %}
{% load crispy_forms_tags cropping%} {% load crispy_forms_tags cropping%}
{% block actions %}
{{ block.super }}
<div class="actions btn-group btn-group-sm" role="group">
<a href="{% url 'sapl.parlamentares:pesquisar_parlamentar' %}" class="btn btn-outline-primary">Pesquisar Parlamentares</a>
</div>
{% endblock actions %}
{% block extra_content %} {% block extra_content %}
<fieldset class="form-group"> <fieldset class="form-group">
<legend>Selecione o Período</legend> <legend>Selecione o Período</legend>

Loading…
Cancel
Save