|
|
@ -5,6 +5,7 @@ from crispy_forms.layout import (HTML, Button, Fieldset, |
|
|
|
from django import forms |
|
|
|
from django.forms import ModelChoiceField |
|
|
|
from django.utils.translation import ugettext_lazy as _ |
|
|
|
from django.db.models import Q |
|
|
|
|
|
|
|
from sapl.audiencia.models import AudienciaPublica |
|
|
|
from sapl.base.models import Autor |
|
|
@ -14,7 +15,7 @@ from sapl.materia.models import DocumentoAcessorio, MateriaLegislativa, MateriaE |
|
|
|
StatusTramitacao, TipoMateriaLegislativa |
|
|
|
from sapl.norma.models import NormaJuridica |
|
|
|
from sapl.protocoloadm.models import DocumentoAdministrativo |
|
|
|
from sapl.sessao.models import SessaoPlenaria, VotoParlamentar |
|
|
|
from sapl.sessao.models import SessaoPlenaria, VotoParlamentar, RegistroVotacao |
|
|
|
from sapl.utils import FilterOverridesMetaMixin, choice_anos_com_normas, qs_override_django_filter, \ |
|
|
|
choice_anos_com_materias, choice_tipos_normas, autor_label, autor_modal |
|
|
|
|
|
|
@ -71,51 +72,56 @@ class RelatorioDocumentosAcessoriosFilterSet(django_filters.FilterSet): |
|
|
|
|
|
|
|
class RelatorioVotacoesNominaisFilterSet(django_filters.FilterSet): |
|
|
|
|
|
|
|
@property |
|
|
|
def qs(self): |
|
|
|
parent = super(RelatorioVotacoesNominaisFilterSet, self).qs |
|
|
|
return parent.distinct().order_by('-votacao_id', 'parlamentar') |
|
|
|
tipo_id = django_filters.ModelChoiceFilter( |
|
|
|
queryset=TipoMateriaLegislativa.objects.all(), |
|
|
|
method='ordem_or_expediente', |
|
|
|
label='Tipo de Matéria', |
|
|
|
empty_label="---------" |
|
|
|
) |
|
|
|
numero = django_filters.NumberFilter( |
|
|
|
widget=forms.NumberInput(attrs={'class': 'form-control', 'step': 'any'}), |
|
|
|
method='ordem_or_expediente', |
|
|
|
label='Número' |
|
|
|
) |
|
|
|
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' |
|
|
|
) |
|
|
|
|
|
|
|
def ordem_or_expediente(self, queryset, name, value): |
|
|
|
if value: |
|
|
|
try: |
|
|
|
val = value.id |
|
|
|
except AttributeError: |
|
|
|
val = value |
|
|
|
return queryset.filter( |
|
|
|
eval(f'Q(ordem__materia__{name}={val}) | Q(expediente__materia__{name}={val})') |
|
|
|
) |
|
|
|
return queryset |
|
|
|
|
|
|
|
class Meta(FilterOverridesMetaMixin): |
|
|
|
model = VotoParlamentar |
|
|
|
model = RegistroVotacao |
|
|
|
fields = ['data_hora'] |
|
|
|
|
|
|
|
def __init__(self, *args, **kwargs): |
|
|
|
super( |
|
|
|
RelatorioVotacoesNominaisFilterSet, self |
|
|
|
).__init__(*args, **kwargs) |
|
|
|
super().__init__(*args, **kwargs) |
|
|
|
|
|
|
|
self.filters['data_hora'].label = 'Período (Data Inicial - Data Final)' |
|
|
|
|
|
|
|
tipo_materia = '''<div class="col-md-6"><div id="div_id_tipo_materia" class="form-group"><label for="id_tipo_materia" class="col-form-label "> |
|
|
|
Tipo de Matéria Legislativa |
|
|
|
</label><div class=""><select name="tipo_materia" class="select form-control" id="id_tipo_materia"><option value="" selected="">---------</option>''' |
|
|
|
for tipo in TipoMateriaLegislativa.objects.all(): |
|
|
|
tipo_materia += '<option value="' + str(tipo.id) + '">' + tipo.descricao + '</option>' |
|
|
|
tipo_materia += '</select></div></div></div>' |
|
|
|
|
|
|
|
numero = '''<div id="div_id_numero" class="col-md-3"><label for="id_numero" class="col-form-label ">Número</label> |
|
|
|
<div class=""><input type="number" name="numero" step="any" class="numberinput form-control" id="id_numero"></div></div>''' |
|
|
|
|
|
|
|
ano = '''<div id="div_id_ano" class="col-md-3"><label for="id_ano" class="col-form-label ">Ano da Matéria</label> |
|
|
|
<div class=""><select name="ano" class="select form-control" id="id_ano"><option value="" selected="">---------</option>''' |
|
|
|
for ano_materia in choice_anos_com_materias(): |
|
|
|
ano += '<option value="' + str(ano_materia[0]) + '">' + str(ano_materia[1]) + '</option>' |
|
|
|
|
|
|
|
ano += '</select></div></div>' |
|
|
|
|
|
|
|
row0= HTML('<div class="row">' + tipo_materia + numero + ano + '</div>') |
|
|
|
row0= to_row([('tipo_id', 6), ('numero', 3), ('ano', 3)]) |
|
|
|
|
|
|
|
row1 = to_row([('data_hora', 12)]) |
|
|
|
|
|
|
|
buttons = FormActions( |
|
|
|
*[ |
|
|
|
HTML(''' |
|
|
|
HTML(""" |
|
|
|
<div class="form-check"> |
|
|
|
<input name="relatorio" type="checkbox" class="form-check-input" id="relatorio"> |
|
|
|
<label class="form-check-label" for="relatorio">Gerar relatório PDF</label> |
|
|
|
</div> |
|
|
|
''') |
|
|
|
""") |
|
|
|
], |
|
|
|
Submit('pesquisar', _('Pesquisar'), css_class='float-right', |
|
|
|
onclick='return true;'), |
|
|
|