diff --git a/sapl/base/forms.py b/sapl/base/forms.py index d111e7f4c..1e53c78df 100644 --- a/sapl/base/forms.py +++ b/sapl/base/forms.py @@ -1,8 +1,9 @@ import logging import os -from crispy_forms.bootstrap import FieldWithButtons, InlineRadios, StrictButton -from crispy_forms.layout import HTML, Button, Div, Field, Fieldset, Layout, Row + +from crispy_forms.bootstrap import FieldWithButtons, InlineRadios, StrictButton, FormActions +from crispy_forms.layout import HTML, Button, Div, Field, Fieldset, Layout, Row, Submit from django import forms from django.conf import settings from django.contrib.auth import get_user_model @@ -34,9 +35,9 @@ from sapl.settings import MAX_IMAGE_UPLOAD_SIZE from sapl.utils import (autor_label, autor_modal, ChoiceWithoutValidationField, choice_anos_com_normas, choice_anos_com_materias, FilterOverridesMetaMixin, FileFieldCheckMixin, - ImageThumbnailFileInput, models_with_gr_for_model, - qs_override_django_filter, RangeWidgetOverride, - RANGE_ANOS, YES_NO_CHOICES) + AnoNumeroOrderingFilter, ImageThumbnailFileInput, + models_with_gr_for_model, qs_override_django_filter, + RangeWidgetOverride, RANGE_ANOS, YES_NO_CHOICES) from .models import AppConfig, CasaLegislativa @@ -761,12 +762,27 @@ class RelatorioDocumentosAcessoriosFilterSet(django_filters.FilterSet): row1 = to_row([('data', 12)]) + buttons = FormActions( + *[ + HTML(''' +
+ + +
+ ''') + ], + 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, - form_actions(label='Pesquisar')) + buttons) ) @@ -791,11 +807,26 @@ class RelatorioAtasFilterSet(django_filters.FilterSet): row1 = to_row([('data_inicio', 12)]) + buttons = FormActions( + *[ + HTML(''' +
+ + +
+ ''') + ], + 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, form_actions(label='Pesquisar')) + row1, buttons, ) ) @@ -827,11 +858,26 @@ class RelatorioNormasMesFilterSet(django_filters.FilterSet): row1 = to_row([('ano', 12)]) + buttons = FormActions( + *[ + HTML(''' +
+ + +
+ ''') + ], + 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, form_actions(label='Pesquisar')) + row1, buttons, ) ) @property @@ -856,11 +902,26 @@ class EstatisticasAcessoNormasForm(Form): row1 = to_row([('ano', 12)]) + buttons = FormActions( + *[ + HTML(''' +
+ + +
+ ''') + ], + Submit('pesquisar', _('Pesquisar'), css_class='float-right', + onclick='return true;'), + css_class='form-group row justify-content-between' + , + ) + self.helper = SaplFormHelper() self.helper.form_method = 'GET' self.helper.layout = Layout( Fieldset(_('Normas por acessos nos meses do ano.'), - row1, form_actions(label='Pesquisar')) + row1, buttons) ) def clean(self): @@ -894,12 +955,27 @@ class RelatorioNormasVigenciaFilterSet(django_filters.FilterSet): row1 = to_row([('ano', 12)]) row2 = to_row([('vigencia', 12)]) + buttons = FormActions( + *[ + HTML(''' +
+ + +
+ ''') + ], + 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, - form_actions(label='Pesquisar')) + buttons, ) ) @property @@ -936,11 +1012,26 @@ class RelatorioPresencaSessaoFilterSet(django_filters.FilterSet): ('tipo', 4)]) row3 = to_row([('exibir_ordem_dia', 12)]) + buttons = FormActions( + *[ + HTML(''' +
+ + +
+ ''') + ], + 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, form_actions(label='Pesquisar')) + row1, row2, row3, buttons, ) ) @property @@ -978,12 +1069,27 @@ class RelatorioHistoricoTramitacaoFilterSet(django_filters.FilterSet): [('tipo', 6), ('tramitacao__status', 6)]) + buttons = FormActions( + *[ + HTML(''' +
+ + +
+ ''') + ], + 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, - form_actions(label='Pesquisar')) + buttons, ) ) @@ -1017,12 +1123,27 @@ class RelatorioDataFimPrazoTramitacaoFilterSet(django_filters.FilterSet): [('tipo', 6), ('tramitacao__status', 6)]) + buttons = FormActions( + *[ + HTML(''' +
+ + +
+ ''') + ], + 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, - form_actions(label='Pesquisar')) + buttons, ) ) @@ -1048,12 +1169,27 @@ class RelatorioReuniaoFilterSet(django_filters.FilterSet): ('nome', 4), ('tema', 4)]) + buttons = FormActions( + *[ + HTML(''' +
+ + +
+ ''') + ], + 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, - form_actions(label='Pesquisar')) + buttons, ) ) @@ -1078,12 +1214,27 @@ class RelatorioAudienciaFilterSet(django_filters.FilterSet): [('tipo', 4), ('nome', 4)]) + buttons = FormActions( + *[ + HTML(''' +
+ + +
+ ''') + ], + 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, - form_actions(label='Pesquisar')) + buttons, ) ) @@ -1125,12 +1276,27 @@ class RelatorioMateriasTramitacaoFilterSet(django_filters.FilterSet): row3 = to_row([('tramitacao__unidade_tramitacao_destino', 12)]) row4 = to_row([('tramitacao__status', 12)]) + buttons = FormActions( + *[ + HTML(''' +
+ + +
+ ''') + ], + 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, - form_actions(label='Pesquisar')) + buttons,) ) @@ -1151,15 +1317,31 @@ class RelatorioMateriasPorAnoAutorTipoFilterSet(django_filters.FilterSet): row1 = to_row( [('ano', 12)]) + buttons = FormActions( + *[ + HTML(''' +
+ + +
+ ''') + ], + 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'), + Fieldset(_('Pesquisa de Matéria por Ano Autor Tipo'), row1, - form_actions(label='Pesquisar')) + buttons, ) ) + class RelatorioMateriasPorAutorFilterSet(django_filters.FilterSet): autoria__autor = django_filters.CharFilter(widget=forms.HiddenInput()) @@ -1192,15 +1374,30 @@ class RelatorioMateriasPorAutorFilterSet(django_filters.FilterSet): 'limpar Autor', css_class='btn btn-primary btn-sm'), 10)]) + buttons = FormActions( + *[ + HTML(''' +
+ + +
+ ''') + ], + 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'), + Fieldset(_('Pesquisa de Matéria por Autor'), row1, row2, HTML(autor_label), HTML(autor_modal), row3, - form_actions(label='Pesquisar')) + buttons, ) ) @@ -1527,12 +1724,27 @@ class RelatorioHistoricoTramitacaoAdmFilterSet(django_filters.FilterSet): [('tipo', 6), ('tramitacaoadministrativo__status', 6)]) + buttons = FormActions( + *[ + HTML(''' +
+ + +
+ ''') + ], + 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, - form_actions(label='Pesquisar')) + buttons, ) ) @@ -1567,6 +1779,20 @@ class RelatorioNormasPorAutorFilterSet(django_filters.FilterSet): (Button('limpar', 'Limpar Autor', css_class='btn btn-primary btn-sm'), 10)]) + buttons = FormActions( + *[ + HTML(''' +
+ + +
+ ''') + ], + 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' diff --git a/sapl/base/views.py b/sapl/base/views.py index bbb926726..df5a1c0f7 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -30,6 +30,14 @@ from django_filters.views import FilterView from haystack.views import SearchView from haystack.query import SearchQuerySet +from sapl.relatorios.views import (relatorio_materia_em_tramitacao, relatorio_materia_por_autor, + relatorio_materia_por_ano_autor, relatorio_presenca_sessao, + relatorio_historico_tramitacao, relatorio_fim_prazo_tramitacao, + relatorio_atas, relatorio_audiencia, relatorio_normas_mes, + relatorio_normas_vigencia, relatorio_historico_tramitacao_adm, + relatorio_reuniao, relatorio_estatisticas_acesso_normas, + relatorio_normas_por_autor, relatorio_documento_acessorio) + from sapl import settings from sapl.audiencia.models import AudienciaPublica, TipoAudienciaPublica from sapl.base.models import Autor, TipoAutor @@ -296,10 +304,24 @@ class RelatoriosListView(TemplateView): return context -class RelatorioDocumentosAcessoriosView(FilterView): +class RelatorioMixin: + def get(self, request, *args, **kwargs): + super(RelatorioMixin, self).get(request) + + is_relatorio = request.GET.get('relatorio') + context = self.get_context_data(filter=self.filterset) + + if is_relatorio: + return self.relatorio(request, context) + else: + return self.render_to_response(context) + + +class RelatorioDocumentosAcessoriosView(RelatorioMixin, FilterView): model = DocumentoAcessorio filterset_class = RelatorioDocumentosAcessoriosFilterSet template_name = 'base/RelatorioDocumentosAcessorios_filter.html' + relatorio = relatorio_documento_acessorio def get_context_data(self, **kwargs): context = super( @@ -339,10 +361,11 @@ class RelatorioDocumentosAcessoriosView(FilterView): return context -class RelatorioAtasView(FilterView): +class RelatorioAtasView(RelatorioMixin, FilterView): model = SessaoPlenaria filterset_class = RelatorioAtasFilterSet template_name = 'base/RelatorioAtas_filter.html' + relatorio = relatorio_atas def get_context_data(self, **kwargs): context = super(RelatorioAtasView, @@ -364,11 +387,12 @@ class RelatorioAtasView(FilterView): return context -class RelatorioPresencaSessaoView(FilterView): +class RelatorioPresencaSessaoView(RelatorioMixin, FilterView): logger = logging.getLogger(__name__) model = SessaoPlenaria filterset_class = RelatorioPresencaSessaoFilterSet template_name = 'base/RelatorioPresencaSessao_filter.html' + relatorio = relatorio_presenca_sessao def get_context_data(self, **kwargs): @@ -530,10 +554,11 @@ class RelatorioPresencaSessaoView(FilterView): return context -class RelatorioHistoricoTramitacaoView(FilterView): +class RelatorioHistoricoTramitacaoView(RelatorioMixin, FilterView): model = MateriaLegislativa filterset_class = RelatorioHistoricoTramitacaoFilterSet template_name = 'base/RelatorioHistoricoTramitacao_filter.html' + relatorio = relatorio_historico_tramitacao def get_context_data(self, **kwargs): context = super(RelatorioHistoricoTramitacaoView, @@ -578,10 +603,11 @@ class RelatorioHistoricoTramitacaoView(FilterView): return context -class RelatorioDataFimPrazoTramitacaoView(FilterView): +class RelatorioDataFimPrazoTramitacaoView(RelatorioMixin, FilterView): model = MateriaLegislativa filterset_class = RelatorioDataFimPrazoTramitacaoFilterSet template_name = 'base/RelatorioDataFimPrazoTramitacao_filter.html' + relatorio = relatorio_fim_prazo_tramitacao def get_context_data(self, **kwargs): context = super(RelatorioDataFimPrazoTramitacaoView, @@ -627,10 +653,11 @@ class RelatorioDataFimPrazoTramitacaoView(FilterView): return context -class RelatorioReuniaoView(FilterView): +class RelatorioReuniaoView(RelatorioMixin, FilterView): model = Reuniao filterset_class = RelatorioReuniaoFilterSet template_name = 'base/RelatorioReuniao_filter.html' + relatorio = relatorio_reuniao def get_filterset_kwargs(self, filterset_class): super(RelatorioReuniaoView, @@ -660,10 +687,11 @@ class RelatorioReuniaoView(FilterView): return context -class RelatorioAudienciaView(FilterView): +class RelatorioAudienciaView(RelatorioMixin, FilterView): model = AudienciaPublica filterset_class = RelatorioAudienciaFilterSet template_name = 'base/RelatorioAudiencia_filter.html' + relatorio = relatorio_audiencia def get_filterset_kwargs(self, filterset_class): super(RelatorioAudienciaView, @@ -693,10 +721,11 @@ class RelatorioAudienciaView(FilterView): return context -class RelatorioMateriasTramitacaoView(FilterView): +class RelatorioMateriasTramitacaoView(RelatorioMixin, FilterView): model = MateriaEmTramitacao filterset_class = RelatorioMateriasTramitacaoFilterSet template_name = 'base/RelatorioMateriasPorTramitacao_filter.html' + relatorio = relatorio_materia_em_tramitacao paginate_by = 100 @@ -799,10 +828,11 @@ class RelatorioMateriasTramitacaoView(FilterView): return context -class RelatorioMateriasPorAnoAutorTipoView(FilterView): +class RelatorioMateriasPorAnoAutorTipoView(RelatorioMixin, FilterView): model = MateriaLegislativa filterset_class = RelatorioMateriasPorAnoAutorTipoFilterSet template_name = 'base/RelatorioMateriasPorAnoAutorTipo_filter.html' + relatorio = relatorio_materia_por_ano_autor def get_materias_autor_ano(self, ano, primeiro_autor): @@ -860,7 +890,7 @@ class RelatorioMateriasPorAnoAutorTipoView(FilterView): return context qtdes = {} for tipo in TipoMateriaLegislativa.objects.all(): - qs = kwargs['object_list'] + qs = context['object_list'] qtde = len(qs.filter(tipo_id=tipo.id)) if qtde > 0: qtdes[tipo] = qtde @@ -882,10 +912,11 @@ class RelatorioMateriasPorAnoAutorTipoView(FilterView): return context -class RelatorioMateriasPorAutorView(FilterView): +class RelatorioMateriasPorAutorView(RelatorioMixin, FilterView): model = MateriaLegislativa filterset_class = RelatorioMateriasPorAutorFilterSet template_name = 'base/RelatorioMateriasPorAutor_filter.html' + relatorio = relatorio_materia_por_autor def get_filterset_kwargs(self, filterset_class): super().get_filterset_kwargs(filterset_class) @@ -901,7 +932,7 @@ class RelatorioMateriasPorAutorView(FilterView): qtdes = {} for tipo in TipoMateriaLegislativa.objects.all(): - qs = kwargs['object_list'] + qs = context['object_list'] qtde = len(qs.filter(tipo_id=tipo.id)) if qtde > 0: qtdes[tipo] = qtde @@ -929,10 +960,11 @@ class RelatorioMateriasPorAutorView(FilterView): return context -class RelatorioNormasPublicadasMesView(FilterView): +class RelatorioNormasPublicadasMesView(RelatorioMixin, FilterView): model = NormaJuridica filterset_class = RelatorioNormasMesFilterSet template_name = 'base/RelatorioNormaMes_filter.html' + relatorio = relatorio_normas_mes def get_context_data(self, **kwargs): context = super(RelatorioNormasPublicadasMesView, @@ -968,10 +1000,11 @@ class RelatorioNormasPublicadasMesView(FilterView): return context -class RelatorioNormasVigenciaView(FilterView): +class RelatorioNormasVigenciaView(RelatorioMixin, FilterView): model = NormaJuridica filterset_class = RelatorioNormasVigenciaFilterSet template_name = 'base/RelatorioNormasVigencia_filter.html' + relatorio = relatorio_normas_vigencia def get_filterset_kwargs(self, filterset_class): super(RelatorioNormasVigenciaView, @@ -1071,7 +1104,15 @@ class EstatisticasAcessoNormas(TemplateView): context['normas_mes'] = normas_mes - return self.render_to_response(context) + is_relatorio = request.GET.get('relatorio') + + context['show_results'] = show_results_filter_set( + self.request.GET.copy()) + + if is_relatorio: + return relatorio_estatisticas_acesso_normas(self, request, context) + else: + return self.render_to_response(context) class ListarInconsistenciasView(PermissionRequiredMixin, ListView): @@ -2068,10 +2109,11 @@ def pesquisa_textual(request): return JsonResponse(json_dict) -class RelatorioHistoricoTramitacaoAdmView(FilterView): +class RelatorioHistoricoTramitacaoAdmView(RelatorioMixin, FilterView): model = DocumentoAdministrativo filterset_class = RelatorioHistoricoTramitacaoAdmFilterSet template_name = 'base/RelatorioHistoricoTramitacaoAdm_filter.html' + relatorio = relatorio_historico_tramitacao_adm def get_context_data(self, **kwargs): context = super(RelatorioHistoricoTramitacaoAdmView, @@ -2115,11 +2157,11 @@ class RelatorioHistoricoTramitacaoAdmView(FilterView): return context - -class RelatorioNormasPorAutorView(FilterView): +class RelatorioNormasPorAutorView(RelatorioMixin, FilterView): model = NormaJuridica filterset_class = RelatorioNormasPorAutorFilterSet template_name = 'base/RelatorioNormasPorAutor_filter.html' + relatorio = relatorio_normas_por_autor def get_filterset_kwargs(self, filterset_class): super().get_filterset_kwargs(filterset_class) @@ -2135,7 +2177,7 @@ class RelatorioNormasPorAutorView(FilterView): qtdes = {} for tipo in TipoNormaJuridica.objects.all(): - qs = kwargs['object_list'] + qs = context['object_list'] qtde = len(qs.filter(tipo_id=tipo.id)) if qtde > 0: qtdes[tipo] = qtde @@ -2161,4 +2203,4 @@ class RelatorioNormasPorAutorView(FilterView): self.request.GET['data_0'] + ' - ' + self.request.GET['data_1']) - return context \ No newline at end of file + return context diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index 7f7608d67..68b18914e 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -1344,8 +1344,7 @@ def resumo_ata_pdf(request,pk): return response - -def relatorio_doc_administrativos(request, context): +def cria_relatorio(request, context, html_string): base_url = request.build_absolute_uri() casa = CasaLegislativa.objects.first() rodape = ' '.join(get_rodape(casa)) @@ -1353,13 +1352,13 @@ def relatorio_doc_administrativos(request, context): context.update({'data': dt.today().strftime('%d/%m/%Y')}) context.update({'rodape': rodape}) - header_context = {"casa": casa, 'logotipo':casa.logotipo, 'MEDIA_URL': MEDIA_URL} + header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL} - html_template = render_to_string('relatorios/relatorio_doc_administrativos.html', context) + html_template = render_to_string(html_string, context) html_header = render_to_string('relatorios/header_ata.html', header_context) - pdf_file = make_pdf(base_url=base_url,main_template=html_template,header_template=html_header) - + pdf_file = make_pdf(base_url=base_url, main_template=html_template, header_template=html_header) + response = HttpResponse(content_type='application/pdf;') response['Content-Disposition'] = 'inline; filename=relatorio.pdf' response['Content-Transfer-Encoding'] = 'binary' @@ -1367,6 +1366,54 @@ def relatorio_doc_administrativos(request, context): return response +def relatorio_doc_administrativos(request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_doc_administrativos.html') + +def relatorio_materia_em_tramitacao(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_materias_em_tramitacao.html') + +def relatorio_materia_por_autor(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_materias_por_autor.html') + +def relatorio_materia_por_ano_autor(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_materias_por_ano_autor.html') + +def relatorio_presenca_sessao(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_presenca_sessao.html') + +def relatorio_atas(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_atas.html') + +def relatorio_historico_tramitacao(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_historico_tramitacao.html') + +def relatorio_fim_prazo_tramitacao(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_fim_prazo_tramitacao.html') + +def relatorio_reuniao(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_reuniao.html') + +def relatorio_audiencia(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_audiencia.html') + +def relatorio_normas_mes(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_normas_mes.html') + +def relatorio_normas_vigencia(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_normas_vigencia.html') + +def relatorio_historico_tramitacao_adm(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_historico_tramitacao_adm.html') + +def relatorio_estatisticas_acesso_normas(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_estatisticas_acesso_normas.html') + +def relatorio_documento_acessorio(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_documento_acessorio.html') + +def relatorio_normas_por_autor(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_normas_por_autor.html') + def relatorio_sessao_plenaria_pdf(request, pk): base_url=request.build_absolute_uri() logger = logging.getLogger(__name__) diff --git a/sapl/templates/relatorios/relatorio_ata.html b/sapl/templates/relatorios/relatorio_ata.html index 0e59ce2c1..b71cc480d 100644 --- a/sapl/templates/relatorios/relatorio_ata.html +++ b/sapl/templates/relatorios/relatorio_ata.html @@ -1,38 +1,6 @@ {% load common_tags %} {% load static %} - diff --git a/sapl/templates/relatorios/relatorio_atas.html b/sapl/templates/relatorios/relatorio_atas.html new file mode 100644 index 000000000..b4bd07da8 --- /dev/null +++ b/sapl/templates/relatorios/relatorio_atas.html @@ -0,0 +1,36 @@ +{% load i18n %} +{% load common_tags %} +{% load static %} + + + + + + + +

Relatório de Atas das Sessões Plenárias

+ + PERÍODO: {{ periodo }}


+ {% if object_list|length > 0 %} + + + + + + + + + {% for sessao in object_list %} + + + + + {% endfor %} + +
SessãoAta
{{sessao}} + +
+ {% else %} +

Nenhum sessão com ata foi encontrada!

+ {% endif %} + \ No newline at end of file diff --git a/sapl/templates/relatorios/relatorio_audiencia.html b/sapl/templates/relatorios/relatorio_audiencia.html new file mode 100644 index 000000000..15f374a6b --- /dev/null +++ b/sapl/templates/relatorios/relatorio_audiencia.html @@ -0,0 +1,35 @@ +{% load i18n %} +{% load common_tags %} +{% load static %} + + + + + + + +

Audiência Pública

+ + {% if object_list|length > 0 %} + + + + + + + + + {% for audiencia in object_list %} + + + + + {% endfor %} + +
Tipo de AudiênciaNome
+ {{audiencia.tipo}} + {{audiencia.nome}}
+ {% else %} +

Nenhuma Audiência Pública foi encontrada!

+ {% endif %} + \ No newline at end of file diff --git a/sapl/templates/relatorios/relatorio_doc_administrativos.html b/sapl/templates/relatorios/relatorio_doc_administrativos.html index 7d7738a42..7a2b04da1 100644 --- a/sapl/templates/relatorios/relatorio_doc_administrativos.html +++ b/sapl/templates/relatorios/relatorio_doc_administrativos.html @@ -3,41 +3,6 @@ {% load crispy_forms_tags staticfiles %} - diff --git a/sapl/templates/relatorios/relatorio_documento_acessorio.html b/sapl/templates/relatorios/relatorio_documento_acessorio.html new file mode 100644 index 000000000..28c482008 --- /dev/null +++ b/sapl/templates/relatorios/relatorio_documento_acessorio.html @@ -0,0 +1,41 @@ +{% load i18n %} +{% load common_tags %} +{% load static %} + + + + + + +

Documento Acessorio

+ + PARÂMETROS DE PESQUISA
+  Tipo de Documento: {{ tipo_documento }}
+  Tipo de Matéria do Documento: {{ tipo_materia }}
+  Período: {{ periodo }}


+ {% if object_list %} + {% if object_list|length == 1 %} +

Foi encontrado 1 documento com esses parâmetros.



+ {% else %} +

Foram encontrados {{ object_list|length }} documentos com esses parâmetros.



+ {% endif %} + + + + + + + + + {% for documento in object_list %} + + + + + {% endfor %} + +
Documento AcessórioMatéria do Documento
{{ documento }}{{ documento.materia }}
+ {% else %} +

Nenhuma documento encontrado com esses parâmetros.



+ {% endif %} + \ No newline at end of file diff --git a/sapl/templates/relatorios/relatorio_estatisticas_acesso_normas.html b/sapl/templates/relatorios/relatorio_estatisticas_acesso_normas.html new file mode 100644 index 000000000..18abbfde7 --- /dev/null +++ b/sapl/templates/relatorios/relatorio_estatisticas_acesso_normas.html @@ -0,0 +1,54 @@ +{% load i18n %} +{% load common_tags %} +{% load static %} + + + + + + + +

Estatísticas de acesso de normas

+ + PARÂMETROS DE PESQUISA:
+  Ano: {{ ano }}
+
+ {% if normas_mes|length == 0 %} +
+

{% trans 'Nenhuma norma teve acesso neste ano.'%}

+ {% else %} + {% for mes, normas in normas_mes.items %} +
+ + + + + + +

Mês: {{ mes }}

+ + + + + + + + + + {% for n in normas %} + {% if n.1 > 0 %} + + + + + + {% endif %} + {% endfor %} + +
NormaEmentaAcessos
+ {{n.0.tipo.descricao}} - {{n.0.tipo.sigla}} {{n.0.numero}}/{{n.0.ano}} + {{n.0.ementa}}
{{n.0.observacao}}
{{n.1}}
+
+ {% endfor %} + {% endif %} + \ No newline at end of file diff --git a/sapl/templates/relatorios/relatorio_fim_prazo_tramitacao.html b/sapl/templates/relatorios/relatorio_fim_prazo_tramitacao.html new file mode 100644 index 000000000..6120c4290 --- /dev/null +++ b/sapl/templates/relatorios/relatorio_fim_prazo_tramitacao.html @@ -0,0 +1,46 @@ +{% load i18n %} +{% load common_tags %} +{% load static %} + + + + + + + +

Fim de Prazo de Tramitações

+ + PARÂMETROS DE PESQUISA:
+  Período: {{ data_tramitacao }}
+  Tipo de matéria: {{ tipo }}
+  Status atual: {{ tramitacao__status }}
+  Local de origem: {{ tramitacao__unidade_tramitacao_local }}
+  Local de destino: {{ tramitacao__unidade_tramitacao_destino }}


+ {% if object_list %} + {% if object_list|length == 1 %} +

Foi encontrada 1 matéria com esses parâmetros.



+ {% else %} +

Foram encontradas {{object_list|length}} matérias com esses parâmetros.



+ {% endif %} + + + + + + + + + {% for materia in object_list %} + + + + + {% endfor %} + +
MatériaEmenta
+ {{materia.tipo.descricao}} - {{materia.tipo.sigla}} {{materia.numero}}/{{materia.ano}} + {{materia.ementa}}
+ {% else %} +

Nenhuma matéria encontrada com esses parâmetros.



+ {% endif %} + \ No newline at end of file diff --git a/sapl/templates/relatorios/relatorio_historico_tramitacao.html b/sapl/templates/relatorios/relatorio_historico_tramitacao.html new file mode 100644 index 000000000..0ba42b8fd --- /dev/null +++ b/sapl/templates/relatorios/relatorio_historico_tramitacao.html @@ -0,0 +1,48 @@ +{% load i18n %} +{% load common_tags %} +{% load static %} + + + + + + + +

Histórico de Tramitações de Matérias Legislativas

+ + PARÂMETROS DE PESQUISA:
+ + Período: {{ data_tramitacao }}
+ Tipo de matéria: {{ tipo }}
+ Status atual: {{ tramitacao__status }}
+ Local de origem: {{ tramitacao__unidade_tramitacao_local }}
+ Local de destino: {{ tramitacao__unidade_tramitacao_destino }}


+ + {% if object_list %} + {% if object_list|length == 1 %} +

Foi encontrada 1 matéria com esses parâmetros.



+ {% else %} +

Foram encontradas {{object_list|length}} matérias com esses parâmetros.



+ {% endif %} + + + + + + + + + {% for materia in object_list %} + + + + + {% endfor %} + +
MatériaEmenta
+ {{materia.tipo.descricao}} - {{materia.tipo.sigla}} {{materia.numero}}/{{materia.ano}} + {{materia.ementa}}
{{materia.observacao}}
+ {% else %} +

Nenhuma matéria encontrada com esses parâmetros.



+ {% endif %} + diff --git a/sapl/templates/relatorios/relatorio_historico_tramitacao_adm.html b/sapl/templates/relatorios/relatorio_historico_tramitacao_adm.html new file mode 100644 index 000000000..c999f9cf3 --- /dev/null +++ b/sapl/templates/relatorios/relatorio_historico_tramitacao_adm.html @@ -0,0 +1,46 @@ +{% load i18n %} +{% load common_tags %} +{% load static %} + + + + + + + +

Histórico de Tramitações de Documento Administrativo

+ + PARÂMETROS DE PESQUISA:
+  Período: {{ data_tramitacao }}
+  Tipo de documento: {{ tipo }}
+  Status atual: {{ tramitacaoadministrativo__status }}
+  Local de origem: {{ tramitacaoadministrativo__unidade_tramitacao_local }}
+  Local de destino: {{ tramitacaoadministrativo__unidade_tramitacao_destino }}


+ {% if object_list %} + {% if object_list|length == 1 %} +

Foi encontrado 1 documento com esses parâmetros.



+ {% else %} +

Foram encontrados {{object_list|length}} documentos com esses parâmetros.



+ {% endif %} + + + + + + + + + {% for documento in object_list %} + + + + + {% endfor %} + +
DocumentoEmenta
+ {{documento.tipo.descricao}} - {{documento.tipo.sigla}} {{documento.numero}}/{{documento.ano}} + {{documento.ementa}}
{{documento.observacao}}
+ {% else %} +

Nenhum documento encontrado com esses parâmetros.



+ {% endif %} + \ No newline at end of file diff --git a/sapl/templates/relatorios/relatorio_materias_em_tramitacao.html b/sapl/templates/relatorios/relatorio_materias_em_tramitacao.html new file mode 100644 index 000000000..3304df5d6 --- /dev/null +++ b/sapl/templates/relatorios/relatorio_materias_em_tramitacao.html @@ -0,0 +1,78 @@ +{% load i18n %} +{% load common_tags %} +{% load static %} + + + + + + + +

Matérias em Tramitação

+ + PARÂMETROS DE PESQUISA:
+ Ano: {{ ano }}
+ Tipo de matéria: {{ tipo }}
+ Status atual: {{ tramitacao__status }}
+ Local atual: {{ tramitacao__unidade_tramitacao_destino }}


+ + {% if object_list|length %} + + + + + + + + + + + {% for key, value in qtdes.items %} + + + + + {% endfor %} + +
QUADRO GERAL
Tipo MatériaQuantidade
{{key.sigla}} - {{key}}{{value}}
+
+
+ + {% for materia in object_list %} +
+ {% if not request.user.is_anonymous%} + Matéria: {{materia.tipo.descricao}} {{materia.numero}}/{{materia.ano}} +
+ Local Atual:  {{materia.tramitacao_set.last.unidade_tramitacao_destino}} +
+ Status:  {{materia.tramitacao_set.last.status}} +
+ {% if d.protocolo %} + Protocolo: {{ d.protocolo}}
+ {% endif %} + {% define d.tramitacaoadministrativo_set.last as tram %} + {% if tram.unidade_tramitacao_destino %} + Localização Atual:  {{tram.unidade_tramitacao_destino}} +
+ Status: {{tram.status}} +
+ {% endif %} + {% define d.documentoacessorioadministrativo_set.all as acess %} + {% if d.documentoacessorioadministrativo_set.all.exists %} + Documentos Acessórios: + + {{ d.documentoacessorioadministrativo_set.all.count }} + +
+ {% endif %} + {% if d.tramitacao and mail_service_configured %} + Acompanhar Documento + {% endif %} + {% endif %} +
+ + {% endfor %} + {% else %} +

Nenhum documento encontrado com essas especificações

+ {% endif %} + \ No newline at end of file diff --git a/sapl/templates/relatorios/relatorio_materias_por_ano_autor.html b/sapl/templates/relatorios/relatorio_materias_por_ano_autor.html new file mode 100644 index 000000000..77749fc95 --- /dev/null +++ b/sapl/templates/relatorios/relatorio_materias_por_ano_autor.html @@ -0,0 +1,97 @@ +{% load i18n %} +{% load common_tags %} +{% load static %} + + + + + + +

Matérias por Ano Autor Tipo

+ + + PARÂMETROS DE PESQUISA:
+  Ano: {{ano}}


+ + {% if object_list|length %} + + + + + + + + + + + {% for key, value in qtdes.items %} + + + + + {% endfor %} + +
QUADRO GERAL
Tipo MatériaQuantidade
{{key.sigla}} - {{key}}{{value}}
+
+
+ + + + {% if object_list|length %} + +

Autorias

+

+ {% for r in relatorio %} +

{{r.autor}}


+ + + + + + + + + {% for i in r.materia %} + + + + {% endfor %} + +
Natureza da ProposituraQuantidade
{{i.0}}{{i.1}}
+

Total: {{r.total}}


+
+
+ {% endfor %} +

+

Coautorias

+

+ {% for r in corelatorio %} +

{{r.autor}}


+ + + + + + + + + {% for i in r.materia %} + + + + {% endfor %} + +
Natureza da ProposituraQuantidade
{{i.0}}{{i.1}}
+

Total: {{r.total}}


+
+
+ {% endfor %} + + + {% endif %} + + {% else %} +

Nenhum documento encontrado com essas especificações

+ {% endif %} + + \ No newline at end of file diff --git a/sapl/templates/relatorios/relatorio_materias_por_autor.html b/sapl/templates/relatorios/relatorio_materias_por_autor.html new file mode 100644 index 000000000..2fcfce982 --- /dev/null +++ b/sapl/templates/relatorios/relatorio_materias_por_autor.html @@ -0,0 +1,72 @@ +{% load i18n %} +{% load common_tags %} +{% load static %} + + + + + + +

Matérias por Autor

+ + PARÂMETROS DE PESQUISA:
+  Autor: {{ autor }}
+  Tipo de matéria: {{ tipo }}
+  Data de apresentação: {{periodo}}


+ + {% if object_list|length %} + + + + + + + + + + + {% for key, value in qtdes.items %} + + + + + {% endfor %} + +
QUADRO GERAL
Tipo MatériaQuantidade
{{key.sigla}} - {{key}}{{value}}
+
+
+ {% if object_list|length %} + + {% for materia in object_list %} + {% ifchanged materia.autoria_set.first.autor %} +
+ Autor: {{ materia.autoria_set.first.autor }} +
+
+ {% endifchanged %} + +
+ + Matéria: {{materia.tipo.descricao}} {{materia.numero}}/{{materia.ano}} +
+ Ementa: {{materia.ementa}} +
+ Coautor(es): {% if materia.autoria_set.first != materia.autoria_set.last %} + {% for autor in materia.autoria_set.all %} + {% if not autor.primeiro_autor %} + {{ autor.autor }}
+ {% endif %} + {% endfor %} + {% endif %} +
+
+ + + {% endfor %} + {% endif %} + + {% else %} +

Nenhum documento encontrado com essas especificações

+ {% endif %} + + \ No newline at end of file diff --git a/sapl/templates/relatorios/relatorio_normas_mes.html b/sapl/templates/relatorios/relatorio_normas_mes.html new file mode 100644 index 000000000..f880370a7 --- /dev/null +++ b/sapl/templates/relatorios/relatorio_normas_mes.html @@ -0,0 +1,64 @@ +{% load i18n %} +{% load common_tags %} +{% load static %} + + + + + + + +

Normas por mês

+ + PARÂMETROS DE PESQUISA:
+  Ano: {{ ano }}
+
+ {% if normas_mes|length == 0 %} +
+

{% trans 'Não foi encontrada nenhuma norma com os parâmetros buscados.'%}

+ {% endif %} + {% for mes, normas in normas_mes.items %} +
+ + + + + + +

Mês: {{ mes }}

+ + + + {% for k, v in quant_normas_mes.items %} + {% if k == mes %} + {% if v > 1 %} + + {% else %} + + {% endif %} + {% endif %} + {% endfor %} + + +
Quantidade encontrada no mês: {{ v }} normas.Quantidade encontrada no mês: 1 norma.
+ + + + + + + + + {% for n in normas %} + + + + + {% endfor %} + +
NormaEmenta
+ {{n.tipo.descricao}} - {{n.tipo.sigla}} {{n.numero}}/{{n.ano}} + {{n.ementa}}
{{n.observacao}}
+
+ {% endfor %} + \ No newline at end of file diff --git a/sapl/templates/relatorios/relatorio_normas_por_autor.html b/sapl/templates/relatorios/relatorio_normas_por_autor.html new file mode 100644 index 000000000..3a4045003 --- /dev/null +++ b/sapl/templates/relatorios/relatorio_normas_por_autor.html @@ -0,0 +1,71 @@ +{% load i18n %} +{% load common_tags %} +{% load static %} + + + + + + +

Norma por Autor

+ + PARÂMETROS DE PESQUISA:
+  Autor: {{ autor }}
+  Tipo de Norma: {{ tipo }}
+  Data: {{periodo}}


+ {% if object_list %} + + + + + + + + + + {% for key, value in qtdes.items %} + + + + + {% endfor %} + + + {% for norma in object_list %} + {% ifchanged norma.autorianorma_set.first.autor %} + + + + + + + + + + + {% endifchanged %} + + + + + + + + + {% endfor %} +
QUADRO GERAL
Tipo de NormaQuantidade
{{key.sigla}} - {{key}}{{value}}
Autor: {{ norma.autorianorma_set.first.autor }}
NormaEmentaCoautor(es)
+ {{norma.tipo.sigla}} {{norma.numero}}/{{norma.ano}} + {% autoescape off %}{{norma.ementa}}
{{norma.observacao}}{% endautoescape %}
+ {% if norma.autorianorma_set.first != norma.autorianorma_set.last %} + {% for autor in norma.autorianorma_set.all %} + {% if not autor.primeiro_autor %} + {{ autor.autor }}
+ {% endif %} + {% endfor %} + {% endif %} +
+ {% else %} +

Não foram encontradas normas com os parâmetros pesquisados.

+ {% endif %} + + \ No newline at end of file diff --git a/sapl/templates/relatorios/relatorio_normas_vigencia.html b/sapl/templates/relatorios/relatorio_normas_vigencia.html new file mode 100644 index 000000000..c470cd970 --- /dev/null +++ b/sapl/templates/relatorios/relatorio_normas_vigencia.html @@ -0,0 +1,54 @@ +{% load i18n %} +{% load common_tags %} +{% load static %} + + + + + + + +

Normas por vigência

+ + PARÂMETROS DE PESQUISA:
+  Ano: {{ ano }}
+  Vigência: {{ vigencia }}
+ {% if object_list %} +
+ {% if object_list|length > 1 %} +

Foram encontradas {{object_list|length}} normas.

+ {% else %} +

Foi encontrada 1 norma.

+ {% endif %} +
+ + + + + + + + + {% for norma in object_list %} + + + + + {% endfor %} + +
NormaEmenta
+ {{norma.tipo.descricao}} - {{norma.tipo.sigla}} {{norma.numero}}/{{norma.ano}} + {{norma.ementa}}
{{norma.observacao}}
+ {% else %} + + + + + + +
Não foi encontrada nenhuma norma com os parâmetros buscados.
+ {% endif %} +
+

Estatísticas das normas do ano:


+

{{quant_vigente}} vigente(s) / {{quant_nao_vigente}} não vigente(s)

+ \ No newline at end of file diff --git a/sapl/templates/relatorios/relatorio_presenca_sessao.html b/sapl/templates/relatorios/relatorio_presenca_sessao.html new file mode 100644 index 000000000..2ccbd4a14 --- /dev/null +++ b/sapl/templates/relatorios/relatorio_presenca_sessao.html @@ -0,0 +1,60 @@ +{% load i18n %} +{% load common_tags %} +{% load static %} + + + + + + + +

Presença dos parlamentares nas sessões

+ + PARÂMETROS DE PESQUISA:
+ + + {% if show_results %} + + +
+ PERÍODO: {{periodo}}
+ Legislatura: {{legislatura}}
+ Sessão Legislativa: {{sessao_legislativa}}
+ TOTAIS NO PERÍODO - SESSÕES: {{total_sessao}} - ORDENS DO DIA: {{total_ordemdia}} +

+ + + + + + + + + + + + + + + + + + {% for p in parlamentares %} + + + + + + + + + + {% endfor %} + +
Nome Parlamentar / PartidoTitular?Ativo?SessãoOrdem do Dia
(Qtd)( % )(Qtd)( % )
{{p.parlamentar}} / {{p.parlamentar|filiacao_intervalo_filter:date_range|default:"Sem Partido"}}{% if p.titular %} Sim {% else %} Não {% endif %}{% if p.parlamentar.ativo %} Sim {% else %} Não {% endif %}{{p.sessao_count}}{{p.sessao_porc}}{{p.ordemdia_count}}{{p.ordemdia_porc}}
+ {% endif %} + \ No newline at end of file diff --git a/sapl/templates/relatorios/relatorio_reuniao.html b/sapl/templates/relatorios/relatorio_reuniao.html new file mode 100644 index 000000000..5d665c9fe --- /dev/null +++ b/sapl/templates/relatorios/relatorio_reuniao.html @@ -0,0 +1,35 @@ +{% load i18n %} +{% load common_tags %} +{% load static %} + + + + + + + +

Reunião de Comissão

+ + {% if object_list|length > 0 %} + + + + + + + + + {% for reuniao in object_list %} + + + + + {% endfor %} + +
ComissaoNome
+ {{reuniao.comissao}} + {{reuniao.nome}}
+ {% else %} +

Nenhum reunião foi encontrada!

+ {% endif %} + \ No newline at end of file diff --git a/sapl/templates/relatorios/relatorio_sessao_plenaria.html b/sapl/templates/relatorios/relatorio_sessao_plenaria.html index d88af15dc..93b593206 100644 --- a/sapl/templates/relatorios/relatorio_sessao_plenaria.html +++ b/sapl/templates/relatorios/relatorio_sessao_plenaria.html @@ -5,41 +5,6 @@ -