Browse Source

Merge 5f14324c87 into 7079ca52d8

pull/3834/merge
cristian-longhi 2 days ago
committed by GitHub
parent
commit
7200e7dd3c
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 34
      sapl/relatorios/forms.py
  2. 16
      sapl/relatorios/views.py
  3. 4
      sapl/templates/materia/materialegislativa_filter.html
  4. 4
      sapl/templates/relatorios/RelatorioVotacoesNominais_filter.html
  5. 7
      sapl/templates/relatorios/custom_data_ordem_field.html
  6. 4
      sapl/templates/relatorios/relatorio_votacao_nominal.html

34
sapl/relatorios/forms.py

@ -6,6 +6,7 @@ from django import forms
from django.forms import ModelChoiceField
from django.utils.translation import ugettext_lazy as _
from django.db.models import Q
from django_filters.widgets import RangeWidget
from sapl.audiencia.models import AudienciaPublica
from sapl.base.models import Autor
@ -20,6 +21,10 @@ from sapl.utils import FilterOverridesMetaMixin, choice_anos_com_normas, qs_over
choice_anos_com_materias, choice_tipos_normas, autor_label, autor_modal
class CustomDateRangeWidget(RangeWidget):
template_name = 'relatorios/custom_data_ordem_field.html'
class RelatorioDocumentosAcessoriosFilterSet(django_filters.FilterSet):
@property
@ -76,40 +81,43 @@ class RelatorioVotacoesNominaisFilterSet(django_filters.FilterSet):
if value is None:
return queryset
value = getattr(value, "pk", value)
ordem_q = f"ordem__materia__{name}"
expediente_q = f"expediente__materia__{name}"
if type(value) == slice:
ordem_q = f"ordem__{name}__range"
expediente_q = f"expediente__{name}__range"
return queryset.filter(Q(**{ordem_q: (value.start, value.stop)}) | Q(**{expediente_q: (value.start, value.stop)}))
ordem_q = f"ordem__{name}"
expediente_q = f"expediente__{name}"
return queryset.filter(Q(**{ordem_q: value}) | Q(**{expediente_q: value}))
tipo_id = django_filters.ModelChoiceFilter(
materia__tipo_id = django_filters.ModelChoiceFilter(
queryset=TipoMateriaLegislativa.objects.all(),
method='ordem_or_expediente',
label='Tipo de Matéria',
empty_label="---------"
)
numero = django_filters.NumberFilter(
materia__numero = django_filters.NumberFilter(
widget=forms.NumberInput(attrs={'class': 'form-control', 'step': 'any'}),
method='ordem_or_expediente',
label='Número'
)
ano = django_filters.ChoiceFilter(
materia__ano = django_filters.ChoiceFilter(
choices=list(choice_anos_com_materias()),
widget=forms.Select(attrs={'class': 'form-control'}),
method='ordem_or_expediente',
label='Ano da Matéria'
)
class Meta(FilterOverridesMetaMixin):
model = RegistroVotacao
fields = ['data_hora']
data_ordem = django_filters.DateFromToRangeFilter(
widget=CustomDateRangeWidget(attrs={'class': 'dateinput form-control'}),
method='ordem_or_expediente',
label='Período (Data Inicial - Data Final)'
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.filters['data_hora'].label = 'Período (Data Inicial - Data Final)'
row0 = to_row([('tipo_id', 6), ('numero', 3), ('ano', 3)])
row0 = to_row([('materia__tipo_id', 6), ('materia__numero', 3), ('materia__ano', 3)])
row1 = to_row([('data_hora', 12)])
row1 = to_row([('data_ordem', 12)])
buttons = FormActions(
*[

16
sapl/relatorios/views.py

@ -7,6 +7,7 @@ from datetime import datetime as dt, datetime
import unidecode
from django.core.exceptions import ObjectDoesNotExist
from django.db.models import Count, Q, F
from django.db.models.functions import Coalesce
from django.http import Http404, HttpResponse
from django.template.loader import render_to_string
from django.utils import timezone
@ -1913,8 +1914,9 @@ class RelatorioVotacoesNominaisView(RelatorioMixin, MultiFormatOutputMixin, Filt
order_fields = ['-votacao_id', 'parlamentar']
qs = VotoParlamentar.objects.filter(query_params).order_by(*order_fields)
else:
order_fields = ['-id']
qs = RegistroVotacao.objects.filter(query_params).order_by(*order_fields)
qs = RegistroVotacao.objects.filter(query_params) \
.annotate(data_votacao=Coalesce('ordem__data_ordem', 'expediente__data_ordem')) \
.order_by('-data_votacao')
return qs
def get_context_data(self, **kwargs):
@ -1931,17 +1933,17 @@ class RelatorioVotacoesNominaisView(RelatorioMixin, MultiFormatOutputMixin, Filt
context['filter_url'] = f"&{query_dict.urlencode()}" if query_dict else ''
context['show_results'] = show_results_filter_set(query_dict)
data_inicial = self.request.GET.get('data_hora_0', '')
data_final = self.request.GET.get('data_hora_1', '')
data_inicial = self.request.GET.get('data_ordem_min', '')
data_final = self.request.GET.get('data_ordem_max', '')
if not data_inicial:
data_inicial = "Data Inicial não definida"
if not data_final:
data_final = "Data Final não definida"
context['periodo'] = f"{data_inicial} - {data_final}"
tipo_id = self.request.GET.get('tipo_id')
numero = self.request.GET.get('numero')
ano = self.request.GET.get('ano')
tipo_id = self.request.GET.get('materia__tipo_id')
numero = self.request.GET.get('materia__numero')
ano = self.request.GET.get('materia__ano')
if tipo_id:
context['tipo_materia'] = TipoMateriaLegislativa.objects.get(id=tipo_id)

4
sapl/templates/materia/materialegislativa_filter.html

@ -115,7 +115,7 @@
<div class="col">
{% for rv in m.registrovotacao_set.all %}
{% if rv.ordem %}
<a href="{% url 'sapl.sessao:ordemdia_list' rv.ordem.sessao_plenaria_id %}">{{ rv.ordem.sessao_plenaria.data_inicio }}</a>
<a href="{% url 'sapl.sessao:ordemdia_list' rv.ordem.sessao_plenaria_id %}">{{ rv.ordem.data_ordem }}</a>
{% if rv.ordem.tipo_votacao == 2 %}
- <a id="link_votacao_nominal_{{ rv.id }}" class="link_votacao_nominal" href="#" onclick="votacaoNominal({{ rv.id }})">
Votação Nominal >>>
@ -130,7 +130,7 @@
</div>
{% endif %}
{% elif rv.expediente %}
<a href="{% url 'sapl.sessao:expedientemateria_list' rv.expediente.sessao_plenaria_id %}">{{ rv.expediente.sessao_plenaria.data_inicio }}</a>
<a href="{% url 'sapl.sessao:expedientemateria_list' rv.expediente.sessao_plenaria_id %}">{{ rv.expediente.data_ordem }}</a>
{% if rv.expediente.tipo_votacao == 2 %}
- <a id="link_votacao_nominal_{{ rv.id }}" class="link_votacao_nominal" href="#" onclick="votacaoNominal({{ rv.id }})">
Votação Nominal >>>

4
sapl/templates/relatorios/RelatorioVotacoesNominais_filter.html

@ -51,13 +51,13 @@
<b><a href="{% url 'sapl.materia:materialegislativa_detail' rv.ordem.materia_id %}">{{ rv.ordem.materia }}</a></b> - {{ rv.ordem.materia.ementa }}<br />
<b>Momento da Votação: </b><a href="{% url 'sapl.sessao:ordemdia_list' rv.ordem.sessao_plenaria_id %}">Ordem do Dia</a> -
<a href="{% url 'sapl.sessao:sessaoplenaria_detail' rv.ordem.sessao_plenaria_id %}">{{ rv.ordem.sessao_plenaria }}</a><br />
<b>Data da Votação: </b>{{ rv.data_hora|date:"d/m/Y" }}<br />
<b>Data da Votação: </b>{{ rv.ordem.data_ordem|date:"d/m/Y" }}<br />
<b>Resultado: </b>{{ rv.ordem.resultado }}
{% else %}
<b><a href="{% url 'sapl.materia:materialegislativa_detail' rv.expediente.materia_id %}">{{ rv.expediente.materia }}</a></b> - {{ rv.expediente.materia.ementa }}<br />
<b>Momento da Votação: </b><a href="{% url 'sapl.sessao:expedientemateria_list' rv.expediente.sessao_plenaria_id %}">Expediente</a> -
<a href="{% url 'sapl.sessao:sessaoplenaria_detail' rv.expediente.sessao_plenaria_id %}">{{ rv.expediente.sessao_plenaria }}</a><br />
<b>Data da Votação: </b>{{ rv.data_hora|date:"d/m/Y" }}<br />
<b>Data da Votação: </b>{{ rv.expediente.data_ordem|date:"d/m/Y" }}<br />
<b>Resultado: </b>{{ rv.expediente.resultado }}
{% endif %}
</td>

7
sapl/templates/relatorios/custom_data_ordem_field.html

@ -0,0 +1,7 @@
<div class="row">
{% for widget in widget.subwidgets %}
<div class="col-sm-6">
{% include widget.template_name %}
</div>
{% endfor %}
</div>

4
sapl/templates/relatorios/relatorio_votacao_nominal.html

@ -31,12 +31,12 @@
{% if rv.ordem %}
<b>Matéria: {{ rv.ordem.materia }}</b> - {{ rv.ordem.materia.ementa }}<br />
<b>Momento da Votação: </b>Ordem do Dia - {{ rv.ordem.sessao_plenaria }}<br />
<b>Data da Votação: </b>{{ rv.data_hora|date:"d/m/Y" }}<br />
<b>Data da Votação: </b>{{ rv.ordem.data_ordem|date:"d/m/Y" }}<br />
<b>Resultado: </b>{{ rv.ordem.resultado }}<br /><br />
{% else %}
<b>Matéria: {{ rv.expediente.materia }}</b> - {{ rv.expediente.materia.ementa }}<br />
<b>Momento da Votação: </b>Expediente - {{ rv.expediente.sessao_plenaria }}<br />
<b>Data da Votação: </b>{{ rv.data_hora|date:"d/m/Y" }}<br />
<b>Data da Votação: </b>{{ rv.expediente.data_ordem|date:"d/m/Y" }}<br />
<b>Resultado: </b>{{ rv.expediente.resultado }}<br /><br />
{% endif %}
</div>

Loading…
Cancel
Save