Browse Source

Fixes #1284 (#1416)

* Fixes #1284

* Conserta bug em pesquisa

* Adiciona condição de prosseguimento
pull/1417/head
Edward 8 years ago
committed by GitHub
parent
commit
dea929d8bc
  1. 50
      sapl/base/views.py
  2. 48
      sapl/templates/base/RelatorioMateriasPorAnoAutorTipo_filter.html

50
sapl/base/views.py

@ -19,7 +19,8 @@ from haystack.views import SearchView
from sapl.base.forms import AutorForm, AutorFormForAdmin, TipoAutorForm from sapl.base.forms import AutorForm, AutorFormForAdmin, TipoAutorForm
from sapl.base.models import Autor, TipoAutor from sapl.base.models import Autor, TipoAutor
from sapl.crud.base import CrudAux from sapl.crud.base import CrudAux
from sapl.materia.models import MateriaLegislativa, TipoMateriaLegislativa from sapl.materia.models import (Autoria, MateriaLegislativa,
TipoMateriaLegislativa)
from sapl.sessao.models import (PresencaOrdemDia, SessaoPlenaria, from sapl.sessao.models import (PresencaOrdemDia, SessaoPlenaria,
SessaoPlenariaPresenca) SessaoPlenariaPresenca)
from sapl.utils import parlamentares_ativos, sapl_logger from sapl.utils import parlamentares_ativos, sapl_logger
@ -344,6 +345,47 @@ class RelatorioMateriasPorAnoAutorTipoView(FilterView):
filterset_class = RelatorioMateriasPorAnoAutorTipoFilterSet filterset_class = RelatorioMateriasPorAnoAutorTipoFilterSet
template_name = 'base/RelatorioMateriasPorAnoAutorTipo_filter.html' template_name = 'base/RelatorioMateriasPorAnoAutorTipo_filter.html'
def get_materias_autor_ano(self, ano):
autorias = Autoria.objects.filter(materia__ano=ano).values(
'autor',
'materia__tipo__sigla',
'materia__tipo__descricao').annotate(
total=Count('materia__tipo')).order_by(
'autor',
'materia__tipo')
autores_ids = set([i['autor'] for i in autorias])
autores = dict((a.id, a) for a in Autor.objects.filter(
id__in=autores_ids))
relatorio = []
visitados = set()
curr = None
for a in autorias:
# se mudou autor, salva atual, caso existente, e reinicia `curr`
if a['autor'] not in visitados:
if curr:
relatorio.append(curr)
curr = {}
curr['autor'] = autores[a['autor']]
curr['materia'] = []
curr['total'] = 0
visitados.add(a['autor'])
# atualiza valores
curr['materia'].append((a['materia__tipo__descricao'], a['total']))
curr['total'] += a['total']
# adiciona o ultimo
relatorio.append(curr)
return relatorio
def get_filterset_kwargs(self, filterset_class): def get_filterset_kwargs(self, filterset_class):
super(RelatorioMateriasPorAnoAutorTipoView, super(RelatorioMateriasPorAnoAutorTipoView,
self).get_filterset_kwargs(filterset_class) self).get_filterset_kwargs(filterset_class)
@ -368,6 +410,12 @@ class RelatorioMateriasPorAnoAutorTipoView(FilterView):
qr = self.request.GET.copy() qr = self.request.GET.copy()
context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else '' context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else ''
if 'ano' in self.request.GET and self.request.GET['ano']:
ano = int(self.request.GET['ano'])
context['relatorio'] = self.get_materias_autor_ano(ano)
else:
context['relatorio'] = []
return context return context

48
sapl/templates/base/RelatorioMateriasPorAnoAutorTipo_filter.html

@ -13,6 +13,29 @@
</div> </div>
<br /><br /><br /><br /> <br /><br /><br /><br />
{% for r in relatorio %}
<h3>{{r.autor}}</h3><br/>
<table class="table table-bordered table-hover">
<thead class="thead-default" >
<tr class="active">
<th>Natureza da Propositura</th>
<th>Quantidade</th>
</tr>
</thead>
<tbody>
{% for i in r.materia %}
<tr>
<td>{{i.0}}</td><td>{{i.1}}</td>
</tr>
{% endfor %}
</tbody>
</table>
<h3>Total: {{r.total}}</h3><br/>
<br/>
<br/>
{% endfor %}
<br/><br/>
<table class="table table-bordered table-hover"> <table class="table table-bordered table-hover">
<thead class="thead-default" > <thead class="thead-default" >
<tr class="active"><th colspan="2" class="text-center">QUADRO GERAL</th></tr> <tr class="active"><th colspan="2" class="text-center">QUADRO GERAL</th></tr>
@ -30,31 +53,6 @@
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
<table class="table table-bordered table-hover">
<thead class="thead-default" >
<tr class="active">
<th>Matéria</th>
<th>Ementa</th>
<th>Autor(es)</th>
</tr>
</thead>
<tbody>
{% for materia in object_list %}
<tr>
<td><a href="{% url 'sapl.materia:materialegislativa_detail' materia.pk %}">
{{materia.tipo.descricao}} - {{materia.tipo.sigla}} {{materia.numero}}/{{materia.ano}}
</a></td>
<td>{{materia.ementa}}</td>
<td>
{% for autor in materia.autoria_set.all %}
{{autor.autor}}<br />
{% endfor %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %} {% endif %}
{% endblock base_content %} {% endblock base_content %}

Loading…
Cancel
Save