Browse Source

Fixes #1200 (#1228)

pull/1232/head
Edward 8 years ago
committed by GitHub
parent
commit
33cd2a8028
  1. 6
      sapl/materia/forms.py
  2. 4
      sapl/parlamentares/urls.py
  3. 62
      sapl/parlamentares/views.py
  4. 52
      sapl/templates/parlamentares/materias.html
  5. 2
      sapl/templates/parlamentares/subnav.yaml

6
sapl/materia/forms.py

@ -490,6 +490,10 @@ class MateriaLegislativaFilterSet(django_filters.FilterSet):
autoria__autor = django_filters.CharFilter(widget=forms.HiddenInput())
autoria__primeiro_autor = django_filters.BooleanFilter(required=False,
label=u'Primeiro Autor',
widget=forms.HiddenInput())
ementa = django_filters.CharFilter(lookup_expr='icontains')
em_tramitacao = django_filters.ChoiceFilter(required=False,
@ -516,6 +520,7 @@ class MateriaLegislativaFilterSet(django_filters.FilterSet):
'data_apresentacao',
'data_publicacao',
'autoria__autor__tipo',
'autoria__primeiro_autor',
# FIXME 'autoria__autor__partido',
'relatoria__parlamentar_id',
'local_origem_externa',
@ -545,6 +550,7 @@ class MateriaLegislativaFilterSet(django_filters.FilterSet):
('data_publicacao', 6)])
row4 = to_row(
[('autoria__autor', 0),
('autoria__primeiro_autor', 0),
(Button('pesquisar',
'Pesquisar Autor',
css_class='btn btn-primary btn-sm'), 2),

4
sapl/parlamentares/urls.py

@ -6,6 +6,7 @@ from sapl.parlamentares.views import (CargoMesaCrud, ColigacaoCrud,
LegislaturaCrud, MandatoCrud,
MesaDiretoraView, NivelInstrucaoCrud,
ParlamentarCrud,
ParlamentarMateriasView,
ParticipacaoParlamentarCrud, PartidoCrud,
ProposicaoParlamentarCrud,
RelatoriaParlamentarCrud,
@ -31,6 +32,9 @@ urlpatterns = [
VotanteView.get_urls()
)),
url(r'^parlamentar/(?P<pk>\d+)/materias$',
ParlamentarMateriasView.as_view(), name='parlamentar_materias'),
url(r'^sistema/coligacao/',
include(ColigacaoCrud.get_urls() +
ComposicaoColigacaoCrud.get_urls())),

62
sapl/parlamentares/views.py

@ -25,6 +25,11 @@ from .models import (CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa,
NivelInstrucao, Parlamentar, Partido, SessaoLegislativa,
SituacaoMilitar, TipoAfastamento, TipoDependente, Votante)
from sapl.base.models import Autor
from sapl.materia.models import Autoria
from django.contrib.contenttypes.models import ContentType
from django.db.models.aggregates import Count
CargoMesaCrud = CrudAux.build(CargoMesa, 'cargo_mesa')
PartidoCrud = CrudAux.build(Partido, 'partidos')
SessaoLegislativaCrud = CrudAux.build(SessaoLegislativa, 'sessao_legislativa')
@ -459,6 +464,63 @@ class ParlamentarCrud(Crud):
return context
class ParlamentarMateriasView(FormView):
template_name = "parlamentares/materias.html"
success_url = reverse_lazy('sapl.parlamentares:parlamentar_materia')
def get_autoria(self, resultset):
autoria = {}
total_autoria = 0
for i in resultset:
row = autoria.get(i['materia__ano'], [])
columns = (i['materia__tipo__pk'],
i['materia__tipo__sigla'],
i['materia__tipo__descricao'],
int(i['total']))
row.append(columns)
autoria[i['materia__ano']] = row
total_autoria += columns[3]
autoria = sorted(autoria.items(), reverse=True)
return autoria, total_autoria
@xframe_options_exempt
def get(self, request, *args, **kwargs):
parlamentar_pk = kwargs['pk']
autor = Autor.objects.get(
content_type=ContentType.objects.get_for_model(Parlamentar),
object_id=parlamentar_pk)
autoria = Autoria.objects.filter(
autor=autor, primeiro_autor=True).values(
'materia__ano',
'materia__tipo__pk',
'materia__tipo__sigla',
'materia__tipo__descricao').annotate(
total=Count('materia__tipo__pk')).order_by(
'-materia__ano', 'materia__tipo')
coautoria = Autoria.objects.filter(
autor=autor, primeiro_autor=False).values(
'materia__ano',
'materia__tipo__pk',
'materia__tipo__sigla',
'materia__tipo__descricao').annotate(
total=Count('materia__tipo__pk')).order_by(
'-materia__ano', 'materia__tipo')
autor_list = self.get_autoria(autoria)
coautor_list = self.get_autoria(coautoria)
nome_parlamentar = autor.autor_related.nome_parlamentar
return self.render_to_response({'autor_pk': autor.pk,
'autoria': autor_list,
'coautoria': coautor_list,
'nome_parlamentar': nome_parlamentar
})
class MesaDiretoraView(FormView):
template_name = 'parlamentares/composicaomesa_form.html'
success_url = reverse_lazy('sapl.parlamentares:mesa_diretora')

52
sapl/templates/parlamentares/materias.html

@ -0,0 +1,52 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load common_tags %}
{% block actions %}{% endblock %}
{% block detail_content %}
<h1>{{nome_parlamentar}}</h1><br/>
<center><h2>Primeiro Autor</h2></center>
<br/>
<table class="table table-striped table-bordered">
{% for autoria in autoria.0 %}
<thead class="thead-default"><tr><td><h3>Ano: {{ autoria.0 }}</h3></td></tr></thead>
{% for materias in autoria.1 %}
<tr>
<td>{{ materias.1 }}&nbsp;</td>
<td>
<a href="{% url 'sapl.materia:pesquisar_materia'%}?tipo={{materias.0}}&ano={{autoria.0}}&autoria__autor={{autor_pk}}&autoria__primeiro_autor=True">
{{ materias.2}}
</a>
</td>
<td>&nbsp;{{ materias.3}}</td>
</tr>
{% endfor %}
{%endfor %}
</table>
<h2>Total: {{ autoria.1 }}</h2><br/>
<center><h2>Co-Autor</h2></center>
<br/>
<table class="table table-striped table-bordered">
{% for coautoria in coautoria.0 %}
<thead class="thead-default"><tr><td><h3>Ano: {{ coautoria.0 }}</h3></td></tr></thead>
{% for materias in coautoria.1 %}
<tr>
<td>{{ materias.1 }}&nbsp;</td>
<td>
<a href="{% url 'sapl.materia:pesquisar_materia'%}?tipo={{materias.0}}&ano={{coautoria.0}}&autoria__autor={{autor_pk}}&autoria__primeiro_autor=False">
{{ materias.2}}
</a>
</td>
<td>&nbsp;{{ materias.3}}</td>
</tr>
{% endfor %}
{%endfor %}
<h2>Total: {{ coautoria.1 }}</h2><br/>
{% endblock detail_content %}

2
sapl/templates/parlamentares/subnav.yaml

@ -3,6 +3,8 @@
url: parlamentar_detail
- title: {% trans 'Mandatos' %}
url: mandato_list
- title: {% trans 'Matérias' %}
url: parlamentar_materias
- title: {% trans 'Filiações Partidárias' %}
url: filiacao_list
- title: {% trans 'Dependentes' %}

Loading…
Cancel
Save