Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 21 additions & 13 deletions sapl/relatorios/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
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
Expand All @@ -20,6 +21,10 @@
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
Expand Down Expand Up @@ -76,40 +81,43 @@ def ordem_or_expediente(self, queryset, name, value):
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(
*[
Expand Down
16 changes: 9 additions & 7 deletions sapl/relatorios/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
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
Expand Down Expand Up @@ -1913,8 +1914,9 @@ def get_queryset(self):
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):
Expand All @@ -1931,17 +1933,17 @@ def get_context_data(self, **kwargs):
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)
Expand Down
4 changes: 2 additions & 2 deletions sapl/templates/materia/materialegislativa_filter.html
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ <h3>{% trans 'Pesquisa concluída com sucesso! Foi encontrada 1 matéria.'%}</h3
<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 >>>
Expand All @@ -130,7 +130,7 @@ <h3>{% trans 'Pesquisa concluída com sucesso! Foi encontrada 1 matéria.'%}</h3
</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 >>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,13 @@ <h3>Foi encontrada {{qtde_votacoes}} votação.</h3></br>
<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>
Expand Down
7 changes: 7 additions & 0 deletions sapl/templates/relatorios/custom_data_ordem_field.html
Original file line number Diff line number Diff line change
@@ -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 changes: 2 additions & 2 deletions sapl/templates/relatorios/relatorio_votacao_nominal.html
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@ <h3>Foi encontrada {{qtde_votacoes}} votação.</h3>
{% 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>
Expand Down