Browse Source

Fix #3100 - Relatórios de Matérias por Autor (#3103)

* Procurar matérias com coautores

* Refatorar template

* Refatorar template pdf

* Refatoração
pull/3126/head
João Rodrigues 5 years ago
committed by GitHub
parent
commit
06f05443e9
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      sapl/base/forms.py
  2. 2
      sapl/base/views.py
  3. 74
      sapl/templates/base/RelatorioMateriasPorAutor_filter.html
  4. 71
      sapl/templates/relatorios/relatorio_materias_por_autor.html

3
sapl/base/forms.py

@ -1382,8 +1382,7 @@ class RelatorioMateriasPorAutorFilterSet(django_filters.FilterSet):
@property
def qs(self):
parent = super().qs
return parent.distinct().filter(autoria__primeiro_autor=True)\
.order_by('autoria__autor', '-autoria__primeiro_autor', 'tipo', '-ano', '-numero')
return parent.distinct().order_by('-ano', '-numero', 'tipo', 'autoria__autor', '-autoria__primeiro_autor')
class Meta(FilterOverridesMetaMixin):
model = MateriaLegislativa

2
sapl/base/views.py

@ -4,6 +4,7 @@ import datetime
import logging
import os
from collections import OrderedDict
from django.contrib import messages
from django.contrib.auth import get_user_model
from django.contrib.auth.mixins import PermissionRequiredMixin
@ -926,6 +927,7 @@ class RelatorioMateriasPorAutorView(RelatorioMixin, FilterView):
return context
qs = context['object_list']
context['materias_resultado'] = list(OrderedDict.fromkeys(qs))
context['qtdes'] = num_materias_por_tipo(qs)
qr = self.request.GET.copy()

74
sapl/templates/base/RelatorioMateriasPorAutor_filter.html

@ -15,11 +15,14 @@
<b>PARÂMETROS DE PESQUISA:<br /></b>
&emsp;Autor: {{ autor }}<br />
&emsp;Tipo de matéria: {{ tipo }}<br />
&emsp;Data de apresentação: {{periodo}}<br /><br /><br/>
{% if object_list %}
&emsp;Data de apresentação: {{ periodo }}<br /><br /><br/>
{% if materias_resultado %}
<table class="table table-bordered table-hover">
<thead class="thead-default" >
<tr class="active"><th colspan="3" class="text-center">QUADRO GERAL</th></tr>
<tr class="active">
<th colspan="3" class="text-center">QUADRO GERAL</th>
</tr>
<tr class="active">
<th colspan="2">Tipo Matéria</th>
<th>Quantidade</th>
@ -33,44 +36,41 @@
</tr>
{% endfor %}
</tbody>
{% for materia in object_list %}
{% ifchanged materia.autoria_set.first.autor %}
<thead class="thead-default" >
<tr style="border-left: hidden; border-right: hidden;"><th colspan="3"></th></tr>
<tr class="active"><th colspan="3" class="text-center">Autor: {{ materia.autoria_set.first.autor }}</th></tr>
<tr class="active">
<th width="10%">Matéria</th>
<th>Ementa</th>
<th width="20%">Coautor(es)</th>
</tr>
</thead>
{% endifchanged %}
<tbody>
<tr>
<td><a href="{% url 'sapl.materia:materialegislativa_detail' materia.pk %}">
{{materia.tipo.sigla}} {{materia.numero}}/{{materia.ano}}
</a></td>
<td>{% autoescape off %}{{materia.ementa}}<br>{{materia.observacao}}{% endautoescape %}</td>
<td>
{% if materia.autoria_set.first != materia.autoria_set.last %}
{% for autor in materia.autoria_set.all %}
{% if not autor.primeiro_autor %}
{{ autor.autor }}<br />
{% endif %}
{% endfor %}
{% endif %}
</td>
</tr>
</tbody>
<thead class ="thead-default">
<tr style="border-left: hidden; border-right: hidden;">
<th colspan="3"></th>
</tr>
<tr class="active">
<th width="10%">Matéria</th>
<th>Ementa</th>
<th width="20%">Autor(es)</th>
</tr>
</thead>
{% for materia in materias_resultado %}
<tbody>
<tr>
<td>
<a href="{% url 'sapl.materia:materialegislativa_detail' materia.pk %}">
{{materia.tipo.sigla}} {{materia.numero}}/{{materia.ano}}
</a>
</td>
<td>{% autoescape off %}{{materia.ementa}}<br>{{materia.observacao}}{% endautoescape %}</td>
<td>
{% for autor in materia.autoria_set.all %}
{% if not autor.primeiro_autor %}
{{ autor.autor }}<br />
{% else %}
<u><b><i>{{ autor.autor }}</i></b></u><br />
{% endif %}
{% endfor %}
</td>
</tr>
</tbody>
{% endfor %}
</table>
<br />
{% else %}
<h3>Não foram encontradas matérias com os parâmetros pesquisados.</h3>
{% endif %}
{% endif %}
{% endblock base_content %}

71
sapl/templates/relatorios/relatorio_materias_por_autor.html

@ -5,17 +5,17 @@
{% block content %}
<h2>Matérias por Autor</h2>
<b>PARÂMETROS DE PESQUISA:<br /></b>
&emsp;Autor: {{ autor }}<br />
&emsp;Tipo de matéria: {{ tipo }}<br />
&emsp;Data de apresentação: {{periodo}}<br /><br /><br/>
{% if object_list|length %}
<table class="table table-bordered table-hover">
<thead class="thead-default" >
<tr class="active"><th colspan="2" class="text-center">QUADRO GERAL</th></tr>
<b>PARÂMETROS DE PESQUISA:<br /></b>
&emsp;Autor: {{ autor }}<br />
&emsp;Tipo de matéria: {{ tipo }}<br />
&emsp;Data de apresentação: {{periodo}}<br /><br /><br/>
{% if materias_resultado|length %}
<table class="table table-bordered table-hover">
<thead class="thead-default">
<tr class="active">
<th colspan="2" class="text-center">QUADRO GERAL</th>
</tr>
<tr class="active">
<th>Tipo Matéria</th>
<th>Quantidade</th>
@ -30,35 +30,26 @@
{% endfor %}
</tbody>
</table>
</br>
</br>
{% if object_list|length %}
{% for materia in object_list %}
{% ifchanged materia.autoria_set.first.autor %}
</br>
<strong>Autor: {{ materia.autoria_set.first.autor }}</strong>
</br>
</br>
{% endifchanged %}
<div style="border-top: 1px solid black;margin-bottom:0.3cm">
<strong>Matéria:</strong> {{materia.tipo.descricao}} {{materia.numero}}/{{materia.ano}}
</br>
<strong>Ementa:</strong> {{materia.ementa}}
</br>
<strong>Coautor(es):</strong> {% if materia.autoria_set.first != materia.autoria_set.last %}
{% for autor in materia.autoria_set.all %}
{% if not autor.primeiro_autor %}
{{ autor.autor }}<br />
{% endif %}
{% endfor %}
{% endif %}
</br>
</div>
</br></br>
{% if materias_resultado|length %}
{% for materia in materias_resultado %}
<strong>Matéria:</strong> {{materia.tipo.descricao}} {{materia.numero}}/{{materia.ano}}
</br>
<strong>Ementa:</strong>
</br>
{{materia.ementa}}
</br>
<strong>Autor(es):</strong>
</br>
{% for autor in materia.autoria_set.all %}
{% if not autor.primeiro_autor %}
{{ autor.autor }}<br />
{% else %}
<u><i>{{ autor.autor }}</i></u><br />
{% endif %}
{% endfor %}
</br>
<div style="border-top: 1px solid black;margin-bottom:0.3cm"></div>
{% endfor %}
{% endif %}

Loading…
Cancel
Save