mirror of https://github.com/interlegis/sapl.git
Edward
1 year ago
committed by
GitHub
23 changed files with 1863 additions and 1858 deletions
File diff suppressed because it is too large
@ -0,0 +1,776 @@ |
|||
import django_filters |
|||
from crispy_forms.bootstrap import (FormActions) |
|||
from crispy_forms.layout import (HTML, Button, Fieldset, |
|||
Layout, Submit) |
|||
from django import forms |
|||
from django.utils.translation import ugettext_lazy as _ |
|||
|
|||
from sapl.audiencia.models import AudienciaPublica |
|||
from sapl.base.models import Autor |
|||
from sapl.comissoes.models import Reuniao |
|||
from sapl.crispy_layout_mixin import SaplFormHelper, to_row, form_actions |
|||
from sapl.materia.models import DocumentoAcessorio, MateriaLegislativa, MateriaEmTramitacao, UnidadeTramitacao, \ |
|||
StatusTramitacao |
|||
from sapl.norma.models import NormaJuridica |
|||
from sapl.protocoloadm.models import DocumentoAdministrativo |
|||
from sapl.sessao.models import SessaoPlenaria |
|||
from sapl.utils import FilterOverridesMetaMixin, choice_anos_com_normas, qs_override_django_filter, \ |
|||
choice_anos_com_materias, choice_tipos_normas, autor_label, autor_modal |
|||
|
|||
|
|||
class RelatorioDocumentosAcessoriosFilterSet(django_filters.FilterSet): |
|||
|
|||
@property |
|||
def qs(self): |
|||
parent = super(RelatorioDocumentosAcessoriosFilterSet, self).qs |
|||
return parent.distinct().order_by('-data') |
|||
|
|||
class Meta(FilterOverridesMetaMixin): |
|||
model = DocumentoAcessorio |
|||
fields = ['tipo', 'materia__tipo', 'data'] |
|||
|
|||
def __init__(self, *args, **kwargs): |
|||
super( |
|||
RelatorioDocumentosAcessoriosFilterSet, self |
|||
).__init__(*args, **kwargs) |
|||
|
|||
self.filters['tipo'].label = 'Tipo de Documento' |
|||
self.filters['materia__tipo'].label = 'Tipo de Matéria do Documento' |
|||
self.filters['data'].label = 'Período (Data Inicial - Data Final)' |
|||
|
|||
self.form.fields['tipo'].required = True |
|||
|
|||
row0 = to_row([('tipo', 6), |
|||
('materia__tipo', 6)]) |
|||
|
|||
row1 = to_row([('data', 12)]) |
|||
|
|||
buttons = FormActions( |
|||
*[ |
|||
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;'), |
|||
css_class='form-group row justify-content-between', |
|||
) |
|||
|
|||
self.form.helper = SaplFormHelper() |
|||
self.form.helper.form_method = 'GET' |
|||
self.form.helper.layout = Layout( |
|||
Fieldset(_('Pesquisa'), |
|||
row0, row1, |
|||
buttons) |
|||
) |
|||
|
|||
|
|||
class RelatorioAtasFilterSet(django_filters.FilterSet): |
|||
class Meta(FilterOverridesMetaMixin): |
|||
model = SessaoPlenaria |
|||
fields = ['data_inicio'] |
|||
|
|||
@property |
|||
def qs(self): |
|||
parent = super(RelatorioAtasFilterSet, self).qs |
|||
return parent.distinct().prefetch_related('tipo').exclude( |
|||
upload_ata='').order_by('-data_inicio', 'tipo', 'numero') |
|||
|
|||
def __init__(self, *args, **kwargs): |
|||
super(RelatorioAtasFilterSet, self).__init__( |
|||
*args, **kwargs) |
|||
|
|||
self.filters['data_inicio'].label = 'Período de Abertura (Inicial - Final)' |
|||
self.form.fields['data_inicio'].required = False |
|||
|
|||
row1 = to_row([('data_inicio', 12)]) |
|||
|
|||
buttons = FormActions( |
|||
*[ |
|||
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;'), |
|||
css_class='form-group row justify-content-between', |
|||
) |
|||
|
|||
self.form.helper = SaplFormHelper() |
|||
self.form.helper.form_method = 'GET' |
|||
self.form.helper.layout = Layout( |
|||
Fieldset(_('Atas das Sessões Plenárias'), |
|||
row1, buttons, ) |
|||
) |
|||
|
|||
|
|||
def ultimo_ano_com_norma(): |
|||
anos_normas = choice_anos_com_normas() |
|||
|
|||
if anos_normas: |
|||
return anos_normas[0] |
|||
return '' |
|||
|
|||
|
|||
class RelatorioNormasMesFilterSet(django_filters.FilterSet): |
|||
ano = django_filters.ChoiceFilter(required=True, |
|||
label='Ano da Norma', |
|||
choices=choice_anos_com_normas, |
|||
initial=ultimo_ano_com_norma) |
|||
|
|||
tipo = django_filters.ChoiceFilter(required=False, |
|||
label='Tipo Norma', |
|||
choices=choice_tipos_normas, |
|||
initial=0) |
|||
|
|||
class Meta: |
|||
model = NormaJuridica |
|||
fields = ['ano'] |
|||
|
|||
def __init__(self, *args, **kwargs): |
|||
super(RelatorioNormasMesFilterSet, self).__init__( |
|||
*args, **kwargs) |
|||
|
|||
self.filters['ano'].label = 'Ano' |
|||
self.form.fields['ano'].required = True |
|||
|
|||
row1 = to_row([('ano', 6), ('tipo', 6)]) |
|||
|
|||
buttons = FormActions( |
|||
*[ |
|||
HTML(''' |
|||
<div class="form-check col-auto"> |
|||
<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;'), |
|||
css_class='form-group row justify-content-between', |
|||
) |
|||
|
|||
self.form.helper = SaplFormHelper() |
|||
self.form.helper.form_method = 'GET' |
|||
self.form.helper.layout = Layout( |
|||
Fieldset(_('Normas por mês do ano.'), |
|||
row1, buttons, ) |
|||
) |
|||
|
|||
@property |
|||
def qs(self): |
|||
parent = super(RelatorioNormasMesFilterSet, self).qs |
|||
return parent.distinct().order_by('data') |
|||
|
|||
|
|||
class RelatorioPresencaSessaoFilterSet(django_filters.FilterSet): |
|||
class Meta(FilterOverridesMetaMixin): |
|||
model = SessaoPlenaria |
|||
fields = ['data_inicio', |
|||
'sessao_legislativa', |
|||
'tipo', |
|||
'legislatura'] |
|||
|
|||
def __init__(self, *args, **kwargs): |
|||
super().__init__(*args, **kwargs) |
|||
|
|||
self.form.fields['exibir_ordem_dia'] = forms.BooleanField( |
|||
required=False, label='Exibir presença das Ordens do Dia') |
|||
self.form.initial['exibir_ordem_dia'] = True |
|||
|
|||
self.form.fields['exibir_somente_titular'] = forms.BooleanField( |
|||
required=False, label='Exibir somente parlamentares titulares') |
|||
self.form.initial['exibir_somente_titular'] = False |
|||
|
|||
self.form.fields['exibir_somente_ativo'] = forms.BooleanField( |
|||
required=False, label='Exibir somente parlamentares ativos') |
|||
self.form.initial['exibir_somente_ativo'] = False |
|||
|
|||
self.form.fields['legislatura'].required = True |
|||
|
|||
self.filters['data_inicio'].label = 'Período (Inicial - Final)' |
|||
|
|||
tipo_sessao_ordinaria = self.filters['tipo'].queryset.filter( |
|||
nome='Ordinária') |
|||
if tipo_sessao_ordinaria: |
|||
self.form.initial['tipo'] = tipo_sessao_ordinaria.first() |
|||
|
|||
row1 = to_row([('legislatura', 4), |
|||
('sessao_legislativa', 4), |
|||
('tipo', 4)]) |
|||
row2 = to_row([('exibir_ordem_dia', 12), |
|||
('exibir_somente_titular', 12), |
|||
('exibir_somente_ativo', 12)]) |
|||
row3 = to_row([('data_inicio', 12)]) |
|||
|
|||
buttons = FormActions( |
|||
*[ |
|||
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;'), |
|||
css_class='form-group row justify-content-between', |
|||
) |
|||
|
|||
self.form.helper = SaplFormHelper() |
|||
self.form.helper.form_method = 'GET' |
|||
self.form.helper.layout = Layout( |
|||
Fieldset(_('Presença dos parlamentares nas sessões plenárias'), |
|||
row1, row2, row3, buttons, ) |
|||
) |
|||
|
|||
@property |
|||
def qs(self): |
|||
return qs_override_django_filter(self) |
|||
|
|||
|
|||
class RelatorioHistoricoTramitacaoFilterSet(django_filters.FilterSet): |
|||
autoria__autor = django_filters.CharFilter(widget=forms.HiddenInput()) |
|||
|
|||
@property |
|||
def qs(self): |
|||
parent = super(RelatorioHistoricoTramitacaoFilterSet, self).qs |
|||
return parent.distinct().prefetch_related('tipo').order_by('-ano', 'tipo', 'numero') |
|||
|
|||
class Meta(FilterOverridesMetaMixin): |
|||
model = MateriaLegislativa |
|||
fields = ['tipo', 'tramitacao__status', 'tramitacao__data_tramitacao', |
|||
'tramitacao__unidade_tramitacao_local', 'tramitacao__unidade_tramitacao_destino'] |
|||
|
|||
def __init__(self, *args, **kwargs): |
|||
super(RelatorioHistoricoTramitacaoFilterSet, self).__init__( |
|||
*args, **kwargs) |
|||
|
|||
self.filters['tipo'].label = 'Tipo de Matéria' |
|||
self.filters['tramitacao__status'].label = _('Status') |
|||
self.filters['tramitacao__unidade_tramitacao_local'].label = _( |
|||
'Unidade Local (Origem)') |
|||
self.filters['tramitacao__unidade_tramitacao_destino'].label = _( |
|||
'Unidade Destino') |
|||
|
|||
row1 = to_row([('tramitacao__data_tramitacao', 12)]) |
|||
row2 = to_row([('tramitacao__unidade_tramitacao_local', 6), |
|||
('tramitacao__unidade_tramitacao_destino', 6)]) |
|||
row3 = to_row( |
|||
[('tipo', 6), |
|||
('tramitacao__status', 6)]) |
|||
|
|||
row4 = to_row([ |
|||
('autoria__autor', 0), |
|||
(Button('pesquisar', |
|||
'Pesquisar Autor', |
|||
css_class='btn btn-primary btn-sm'), 2), |
|||
(Button('limpar', |
|||
'Limpar Autor', |
|||
css_class='btn btn-primary btn-sm'), 2) |
|||
]) |
|||
|
|||
buttons = FormActions( |
|||
*[ |
|||
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;'), |
|||
css_class='form-group row justify-content-between', |
|||
) |
|||
|
|||
self.form.helper = SaplFormHelper() |
|||
self.form.helper.form_method = 'GET' |
|||
self.form.helper.layout = Layout( |
|||
Fieldset(_('Pesquisar'), |
|||
row1, row2, row3, row4, |
|||
HTML(autor_label), |
|||
HTML(autor_modal), |
|||
buttons, ) |
|||
) |
|||
|
|||
|
|||
class RelatorioDataFimPrazoTramitacaoFilterSet(django_filters.FilterSet): |
|||
materia__ano = django_filters.ChoiceFilter(required=False, |
|||
label='Ano da Matéria', |
|||
choices=choice_anos_com_materias) |
|||
|
|||
@property |
|||
def qs(self): |
|||
parent = super(RelatorioDataFimPrazoTramitacaoFilterSet, self).qs |
|||
return parent.distinct().prefetch_related('materia__tipo').order_by('tramitacao__data_fim_prazo', 'materia__tipo', 'materia__numero') |
|||
|
|||
class Meta(FilterOverridesMetaMixin): |
|||
model = MateriaEmTramitacao |
|||
fields = ['materia__tipo', |
|||
'tramitacao__unidade_tramitacao_local', |
|||
'tramitacao__unidade_tramitacao_destino', |
|||
'tramitacao__status', |
|||
'tramitacao__data_fim_prazo'] |
|||
|
|||
def __init__(self, *args, **kwargs): |
|||
super(RelatorioDataFimPrazoTramitacaoFilterSet, self).__init__( |
|||
*args, **kwargs) |
|||
|
|||
self.filters['materia__tipo'].label = 'Tipo de Matéria' |
|||
self.filters[ |
|||
'tramitacao__unidade_tramitacao_local'].label = 'Unidade Local (Origem)' |
|||
self.filters['tramitacao__unidade_tramitacao_destino'].label = 'Unidade Destino' |
|||
self.filters['tramitacao__status'].label = 'Status de tramitação' |
|||
|
|||
row1 = to_row([('materia__ano', 12)]) |
|||
row2 = to_row([('tramitacao__data_fim_prazo', 12)]) |
|||
row3 = to_row([('tramitacao__unidade_tramitacao_local', 6), |
|||
('tramitacao__unidade_tramitacao_destino', 6)]) |
|||
row4 = to_row( |
|||
[('materia__tipo', 6), |
|||
('tramitacao__status', 6)]) |
|||
|
|||
buttons = FormActions( |
|||
*[ |
|||
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;'), |
|||
css_class='form-group row justify-content-between', |
|||
) |
|||
|
|||
self.form.helper = SaplFormHelper() |
|||
self.form.helper.form_method = 'GET' |
|||
self.form.helper.layout = Layout( |
|||
Fieldset(_('Tramitações'), |
|||
row1, row2, row3, row4, |
|||
buttons, ) |
|||
) |
|||
|
|||
|
|||
class RelatorioReuniaoFilterSet(django_filters.FilterSet): |
|||
|
|||
@property |
|||
def qs(self): |
|||
parent = super(RelatorioReuniaoFilterSet, self).qs |
|||
return parent.distinct().order_by('-data', 'comissao') |
|||
|
|||
class Meta: |
|||
model = Reuniao |
|||
fields = ['comissao', 'data', |
|||
'nome', 'tema'] |
|||
|
|||
def __init__(self, *args, **kwargs): |
|||
super(RelatorioReuniaoFilterSet, self).__init__( |
|||
*args, **kwargs) |
|||
|
|||
row1 = to_row([('data', 12)]) |
|||
row2 = to_row( |
|||
[('comissao', 4), |
|||
('nome', 4), |
|||
('tema', 4)]) |
|||
|
|||
buttons = FormActions( |
|||
*[ |
|||
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;'), |
|||
css_class='form-group row justify-content-between', |
|||
) |
|||
|
|||
self.form.helper = SaplFormHelper() |
|||
self.form.helper.form_method = 'GET' |
|||
self.form.helper.layout = Layout( |
|||
Fieldset(_('Reunião de Comissão'), |
|||
row1, row2, |
|||
buttons, ) |
|||
) |
|||
|
|||
|
|||
class RelatorioAudienciaFilterSet(django_filters.FilterSet): |
|||
|
|||
@property |
|||
def qs(self): |
|||
parent = super(RelatorioAudienciaFilterSet, self).qs |
|||
return parent.distinct().order_by('-data', 'tipo') |
|||
|
|||
class Meta: |
|||
model = AudienciaPublica |
|||
fields = ['tipo', 'data', |
|||
'nome'] |
|||
|
|||
def __init__(self, *args, **kwargs): |
|||
super(RelatorioAudienciaFilterSet, self).__init__( |
|||
*args, **kwargs) |
|||
|
|||
row1 = to_row([('data', 12)]) |
|||
row2 = to_row( |
|||
[('tipo', 4), |
|||
('nome', 4)]) |
|||
|
|||
buttons = FormActions( |
|||
*[ |
|||
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;'), |
|||
css_class='form-group row justify-content-between', |
|||
) |
|||
|
|||
self.form.helper = SaplFormHelper() |
|||
self.form.helper.form_method = 'GET' |
|||
self.form.helper.layout = Layout( |
|||
Fieldset(_('Audiência Pública'), |
|||
row1, row2, |
|||
buttons, ) |
|||
) |
|||
|
|||
|
|||
class RelatorioMateriasTramitacaoFilterSet(django_filters.FilterSet): |
|||
materia__ano = django_filters.ChoiceFilter(required=True, |
|||
label='Ano da Matéria', |
|||
choices=choice_anos_com_materias) |
|||
|
|||
tramitacao__unidade_tramitacao_destino = django_filters.ModelChoiceFilter( |
|||
queryset=UnidadeTramitacao.objects.all(), |
|||
label=_('Unidade Atual')) |
|||
|
|||
tramitacao__status = django_filters.ModelChoiceFilter( |
|||
queryset=StatusTramitacao.objects.all(), |
|||
label=_('Status Atual')) |
|||
|
|||
materia__autores = django_filters.ModelChoiceFilter( |
|||
label='Autor da Matéria', |
|||
queryset=Autor.objects.all()) |
|||
|
|||
@property |
|||
def qs(self): |
|||
parent = super(RelatorioMateriasTramitacaoFilterSet, self).qs |
|||
return parent.distinct().order_by( |
|||
'-materia__ano', 'materia__tipo', '-materia__numero' |
|||
) |
|||
|
|||
class Meta: |
|||
model = MateriaEmTramitacao |
|||
fields = ['materia__ano', 'materia__tipo', |
|||
'tramitacao__unidade_tramitacao_destino', |
|||
'tramitacao__status', 'materia__autores'] |
|||
|
|||
def __init__(self, *args, **kwargs): |
|||
super(RelatorioMateriasTramitacaoFilterSet, self).__init__( |
|||
*args, **kwargs) |
|||
|
|||
self.filters['materia__tipo'].label = 'Tipo de Matéria' |
|||
|
|||
row1 = to_row([('materia__ano', 12)]) |
|||
row2 = to_row([('materia__tipo', 12)]) |
|||
row3 = to_row([('tramitacao__unidade_tramitacao_destino', 12)]) |
|||
row4 = to_row([('tramitacao__status', 12)]) |
|||
row5 = to_row([('materia__autores', 12)]) |
|||
|
|||
buttons = FormActions( |
|||
*[ |
|||
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;'), |
|||
css_class='form-group row justify-content-between', |
|||
) |
|||
|
|||
self.form.helper = SaplFormHelper() |
|||
self.form.helper.form_method = 'GET' |
|||
self.form.helper.layout = Layout( |
|||
Fieldset(_('Pesquisa de Matéria em Tramitação'), |
|||
row1, row2, row3, row4, row5, |
|||
buttons, ) |
|||
) |
|||
|
|||
|
|||
class RelatorioMateriasPorAnoAutorTipoFilterSet(django_filters.FilterSet): |
|||
ano = django_filters.ChoiceFilter(required=True, |
|||
label='Ano da Matéria', |
|||
choices=choice_anos_com_materias) |
|||
|
|||
class Meta: |
|||
model = MateriaLegislativa |
|||
fields = ['ano'] |
|||
|
|||
def __init__(self, *args, **kwargs): |
|||
super(RelatorioMateriasPorAnoAutorTipoFilterSet, self).__init__( |
|||
*args, **kwargs) |
|||
|
|||
row1 = to_row( |
|||
[('ano', 12)]) |
|||
|
|||
buttons = FormActions( |
|||
*[ |
|||
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;'), |
|||
css_class='form-group row justify-content-between', |
|||
) |
|||
|
|||
self.form.helper = SaplFormHelper() |
|||
self.form.helper.form_method = 'GET' |
|||
self.form.helper.layout = Layout( |
|||
Fieldset(_('Pesquisa de Matéria por Ano Autor Tipo'), |
|||
row1, |
|||
buttons, ) |
|||
) |
|||
|
|||
|
|||
class RelatorioMateriasPorAutorFilterSet(django_filters.FilterSet): |
|||
autoria__autor = django_filters.CharFilter(widget=forms.HiddenInput()) |
|||
|
|||
@property |
|||
def qs(self): |
|||
parent = super().qs |
|||
return parent.distinct().order_by('-ano', '-numero', 'tipo', 'autoria__autor', '-autoria__primeiro_autor') |
|||
|
|||
class Meta(FilterOverridesMetaMixin): |
|||
model = MateriaLegislativa |
|||
fields = ['tipo', 'data_apresentacao'] |
|||
|
|||
def __init__(self, *args, **kwargs): |
|||
super().__init__(*args, **kwargs) |
|||
|
|||
self.filters['tipo'].label = 'Tipo de Matéria' |
|||
|
|||
row1 = to_row( |
|||
[('tipo', 12)]) |
|||
row2 = to_row( |
|||
[('data_apresentacao', 12)]) |
|||
row3 = to_row( |
|||
[('autoria__autor', 0), |
|||
(Button('pesquisar', |
|||
'Pesquisar Autor', |
|||
css_class='btn btn-primary btn-sm'), 2), |
|||
(Button('limpar', |
|||
'Limpar Autor', |
|||
css_class='btn btn-primary btn-sm'), 10)]) |
|||
|
|||
buttons = FormActions( |
|||
*[ |
|||
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;'), |
|||
css_class='form-group row justify-content-between', |
|||
) |
|||
|
|||
self.form.helper = SaplFormHelper() |
|||
self.form.helper.form_method = 'GET' |
|||
self.form.helper.layout = Layout( |
|||
Fieldset(_('Pesquisa de Matéria por Autor'), |
|||
row1, row2, |
|||
HTML(autor_label), |
|||
HTML(autor_modal), |
|||
row3, |
|||
buttons, ) |
|||
) |
|||
|
|||
|
|||
class RelatorioHistoricoTramitacaoAdmFilterSet(django_filters.FilterSet): |
|||
|
|||
@property |
|||
def qs(self): |
|||
parent = super(RelatorioHistoricoTramitacaoAdmFilterSet, self).qs |
|||
return parent.distinct().prefetch_related('tipo').order_by('-ano', 'tipo', 'numero') |
|||
|
|||
class Meta(FilterOverridesMetaMixin): |
|||
model = DocumentoAdministrativo |
|||
fields = ['tipo', 'tramitacaoadministrativo__status', |
|||
'tramitacaoadministrativo__data_tramitacao', |
|||
'tramitacaoadministrativo__unidade_tramitacao_local', |
|||
'tramitacaoadministrativo__unidade_tramitacao_destino'] |
|||
|
|||
def __init__(self, *args, **kwargs): |
|||
super(RelatorioHistoricoTramitacaoAdmFilterSet, self).__init__( |
|||
*args, **kwargs) |
|||
|
|||
self.filters['tipo'].label = 'Tipo de Documento' |
|||
self.filters['tramitacaoadministrativo__status'].label = _('Status') |
|||
self.filters['tramitacaoadministrativo__unidade_tramitacao_local'].label = _( |
|||
'Unidade Local (Origem)') |
|||
self.filters['tramitacaoadministrativo__unidade_tramitacao_destino'].label = _( |
|||
'Unidade Destino') |
|||
|
|||
row1 = to_row([('tramitacaoadministrativo__data_tramitacao', 12)]) |
|||
row2 = to_row([('tramitacaoadministrativo__unidade_tramitacao_local', 6), |
|||
('tramitacaoadministrativo__unidade_tramitacao_destino', 6)]) |
|||
row3 = to_row( |
|||
[('tipo', 6), |
|||
('tramitacaoadministrativo__status', 6)]) |
|||
|
|||
buttons = FormActions( |
|||
*[ |
|||
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;'), |
|||
css_class='form-group row justify-content-between', |
|||
) |
|||
|
|||
self.form.helper = SaplFormHelper() |
|||
self.form.helper.form_method = 'GET' |
|||
self.form.helper.layout = Layout( |
|||
Fieldset(_(''), |
|||
row1, row2, row3, |
|||
buttons, ) |
|||
) |
|||
|
|||
|
|||
class RelatorioNormasPorAutorFilterSet(django_filters.FilterSet): |
|||
autorianorma__autor = django_filters.CharFilter(widget=forms.HiddenInput()) |
|||
|
|||
@property |
|||
def qs(self): |
|||
parent = super().qs |
|||
return parent.distinct().filter(autorianorma__primeiro_autor=True) \ |
|||
.order_by('autorianorma__autor', '-autorianorma__primeiro_autor', 'tipo', '-ano', '-numero') |
|||
|
|||
class Meta(FilterOverridesMetaMixin): |
|||
model = NormaJuridica |
|||
fields = ['tipo', 'data'] |
|||
|
|||
def __init__(self, *args, **kwargs): |
|||
super().__init__(*args, **kwargs) |
|||
|
|||
self.filters['tipo'].label = 'Tipo de Norma' |
|||
|
|||
row1 = to_row( |
|||
[('tipo', 12)]) |
|||
row2 = to_row( |
|||
[('data', 12)]) |
|||
row3 = to_row( |
|||
[('autorianorma__autor', 0), |
|||
(Button('pesquisar', |
|||
'Pesquisar Autor', |
|||
css_class='btn btn-primary btn-sm'), 2), |
|||
(Button('limpar', |
|||
'Limpar Autor', |
|||
css_class='btn btn-primary btn-sm'), 10)]) |
|||
buttons = FormActions( |
|||
*[ |
|||
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;'), |
|||
css_class='form-group row justify-content-between', |
|||
) |
|||
|
|||
self.form.helper = SaplFormHelper() |
|||
self.form.helper.form_method = 'GET' |
|||
self.form.helper.layout = Layout( |
|||
Fieldset(_('Pesquisar'), |
|||
row1, row2, |
|||
HTML(autor_label), |
|||
HTML(autor_modal), |
|||
row3, |
|||
form_actions(label='Pesquisar')) |
|||
) |
|||
|
|||
|
|||
class RelatorioNormasVigenciaFilterSet(django_filters.FilterSet): |
|||
ano = django_filters.ChoiceFilter(required=True, |
|||
label='Ano da Norma', |
|||
choices=choice_anos_com_normas, |
|||
initial=ultimo_ano_com_norma) |
|||
|
|||
tipo = django_filters.ChoiceFilter(required=False, |
|||
label='Tipo Norma', |
|||
choices=choice_tipos_normas, |
|||
initial=0) |
|||
|
|||
vigencia = forms.ChoiceField( |
|||
label=_('Vigência'), |
|||
choices=[(True, "Vigente"), (False, "Não vigente")], |
|||
widget=forms.RadioSelect(), |
|||
required=True, |
|||
initial=True) |
|||
|
|||
def __init__(self, *args, **kwargs): |
|||
super(RelatorioNormasVigenciaFilterSet, self).__init__( |
|||
*args, **kwargs) |
|||
|
|||
self.filters['ano'].label = 'Ano' |
|||
self.form.fields['ano'].required = True |
|||
self.form.fields['vigencia'] = self.vigencia |
|||
|
|||
row1 = to_row([('ano', 6), ('tipo', 6)]) |
|||
row2 = to_row([('vigencia', 12)]) |
|||
|
|||
buttons = FormActions( |
|||
*[ |
|||
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;'), |
|||
css_class='form-group row justify-content-between', |
|||
) |
|||
|
|||
self.form.helper = SaplFormHelper() |
|||
self.form.helper.form_method = 'GET' |
|||
self.form.helper.layout = Layout( |
|||
Fieldset(_('Normas por vigência.'), |
|||
row1, row2, |
|||
buttons, ) |
|||
) |
|||
|
|||
@property |
|||
def qs(self): |
|||
return qs_override_django_filter(self) |
File diff suppressed because it is too large
Loading…
Reference in new issue