From 598c8454712454d652482f96f754fe364ca956d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Rodrigues?= Date: Fri, 2 Aug 2019 10:43:51 -0300 Subject: [PATCH] =?UTF-8?q?Relatorio=20de=20Documentos=20Acess=C3=B3rios?= =?UTF-8?q?=20de=20Mat=C3=A9ria=20Legislativa=20(#2901)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Adicionar novo título de relatório * Adicionar pesquisa de doc acessórios de matérias * Adicionar relatório de documentos acessórios --- sapl/base/forms.py | 41 +++++++++++++++- sapl/base/urls.py | 5 +- sapl/base/views.py | 49 ++++++++++++++++++- .../RelatorioDocumentosAcessorios_filter.html | 43 ++++++++++++++++ sapl/templates/base/relatorios_list.html | 4 ++ 5 files changed, 137 insertions(+), 5 deletions(-) create mode 100644 sapl/templates/base/RelatorioDocumentosAcessorios_filter.html diff --git a/sapl/base/forms.py b/sapl/base/forms.py index b3796a405..fec56d470 100644 --- a/sapl/base/forms.py +++ b/sapl/base/forms.py @@ -26,8 +26,8 @@ from sapl.comissoes.models import Reuniao, Comissao from sapl.crispy_layout_mixin import (SaplFormLayout, form_actions, to_column, to_row) from sapl.crispy_layout_mixin import SaplFormHelper -from sapl.materia.models import ( - MateriaLegislativa, UnidadeTramitacao, StatusTramitacao) +from sapl.materia.models import (MateriaLegislativa, UnidadeTramitacao, StatusTramitacao, + DocumentoAcessorio, TipoMateriaLegislativa) from sapl.norma.models import (NormaJuridica, NormaEstatisticas) from sapl.protocoloadm.models import DocumentoAdministrativo from sapl.parlamentares.models import SessaoLegislativa, Partido, HistoricoPartido @@ -732,6 +732,43 @@ class AutorFormForAdmin(AutorForm): 'status_user'] +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)]) + + self.form.helper = SaplFormHelper() + self.form.helper.form_method = 'GET' + self.form.helper.layout = Layout( + Fieldset(_('Pesquisa'), + row0, row1, + form_actions(label='Pesquisar')) + ) + + class RelatorioAtasFilterSet(django_filters.FilterSet): class Meta(FilterOverridesMetaMixin): diff --git a/sapl/base/urls.py b/sapl/base/urls.py index eec4e9d3a..ee1cf39fd 100644 --- a/sapl/base/urls.py +++ b/sapl/base/urls.py @@ -38,7 +38,7 @@ from .views import (AlterarSenha, AppConfigCrud, CasaLegislativaCrud, ListarAutoresDuplicadosView, ListarBancadaComissaoAutorExternoView, ListarLegislaturaInfindavelView, ListarAnexadasCiclicasView, ListarAnexadosCiclicosView, pesquisa_textual, - RelatorioHistoricoTramitacaoAdmView) + RelatorioHistoricoTramitacaoAdmView, RelatorioDocumentosAcessoriosView) app_name = AppConfig.name @@ -153,6 +153,9 @@ urlpatterns = [ url(r'^sistema/relatorios/historico-tramitacoesadm$', RelatorioHistoricoTramitacaoAdmView.as_view(), name='historico_tramitacoes_adm'), + url(r'^sistema/relatorios/documentos_acessorios$', + RelatorioDocumentosAcessoriosView.as_view(), + name='relatorio_documentos_acessorios'), url(r'^email/validate/(?P[0-9A-Za-z_\-]+)/' '(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})$', diff --git a/sapl/base/views.py b/sapl/base/views.py index b29658e4e..12b2449c1 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -39,7 +39,8 @@ from sapl.base.models import Autor, TipoAutor from sapl.comissoes.models import Reuniao, Comissao from sapl.crud.base import CrudAux, make_pagination from sapl.materia.models import (Autoria, MateriaLegislativa, Proposicao, Anexada, - TipoMateriaLegislativa, StatusTramitacao, UnidadeTramitacao) + TipoMateriaLegislativa, StatusTramitacao, UnidadeTramitacao, + DocumentoAcessorio, TipoDocumento) from sapl.norma.models import (NormaJuridica, NormaEstatisticas) from sapl.parlamentares.models import (Parlamentar, Legislatura, Mandato, Filiacao, SessaoLegislativa, Bancada) @@ -64,7 +65,8 @@ from .forms import (AlterarSenhaForm, CasaLegislativaForm, UsuarioEditForm, RelatorioNormasMesFilterSet, RelatorioNormasVigenciaFilterSet, EstatisticasAcessoNormasForm, UsuarioFilterSet, - RelatorioHistoricoTramitacaoAdmFilterSet) + RelatorioHistoricoTramitacaoAdmFilterSet, + RelatorioDocumentosAcessoriosFilterSet) from .models import AppConfig, CasaLegislativa @@ -325,6 +327,49 @@ class RelatoriosListView(TemplateView): return context +class RelatorioDocumentosAcessoriosView(FilterView): + model = DocumentoAcessorio + filterset_class = RelatorioDocumentosAcessoriosFilterSet + template_name = 'base/RelatorioDocumentosAcessorios_filter.html' + + def get_context_data(self, **kwargs): + context = super( + RelatorioDocumentosAcessoriosView, self + ).get_context_data(**kwargs) + + context['title'] = _('Documentos Acessórios das Matérias Legislativas') + + if not self.filterset.form.is_valid(): + return context + + query_dict = self.request.GET.copy() + context['show_results'] = show_results_filter_set(query_dict) + + context['tipo_documento'] = str( + TipoDocumento.objects.get(pk=self.request.GET['tipo']) + ) + + tipo_materia = self.request.GET['materia__tipo'] + if tipo_materia: + context['tipo_materia'] = str( + TipoMateriaLegislativa.objects.get(pk=tipo_materia) + ) + else: + context['tipo_materia'] = "Não selecionado" + + data_inicial = self.request.GET['data_0'] + data_final = self.request.GET['data_1'] + if not data_inicial: + data_inicial = "Data Inicial não definida" + if not data_final: + data_final = "Data Final não definida" + context['periodo'] = ( + data_inicial + ' - ' + data_final + ) + + return context + + class RelatorioAtasView(FilterView): model = SessaoPlenaria filterset_class = RelatorioAtasFilterSet diff --git a/sapl/templates/base/RelatorioDocumentosAcessorios_filter.html b/sapl/templates/base/RelatorioDocumentosAcessorios_filter.html new file mode 100644 index 000000000..0649a0624 --- /dev/null +++ b/sapl/templates/base/RelatorioDocumentosAcessorios_filter.html @@ -0,0 +1,43 @@ +{% extends "crud/list.html" %} +{% load i18n %} +{% load crispy_forms_tags %} + +{% block base_content %} + {% if not show_results %} + {% crispy filter.form %} + {% else %} + +



+ 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 %} + {% endif %} +{% endblock base_content %} diff --git a/sapl/templates/base/relatorios_list.html b/sapl/templates/base/relatorios_list.html index c2fcf4d0d..d031c22a1 100644 --- a/sapl/templates/base/relatorios_list.html +++ b/sapl/templates/base/relatorios_list.html @@ -66,6 +66,10 @@ Normas por acesso. {% endif %} + + Documentos Acessórios de Matérias Legislativas + Documentos Acessórios por tipo, período e tipo da Matéria Legislativa associada. +