|
|
|
@ -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( |
|
|
|
*[ |
|
|
|
|