From f46a7aced12fc3d06d1101b23c09b184635b9c8e Mon Sep 17 00:00:00 2001 From: ricardocanela Date: Wed, 28 Aug 2019 10:28:31 -0300 Subject: [PATCH] fix rebase --- sapl/base/views.py | 172 +++++---------------- sapl/relatorios/views.py | 320 ++++----------------------------------- 2 files changed, 66 insertions(+), 426 deletions(-) diff --git a/sapl/base/views.py b/sapl/base/views.py index 5bde04c95..b2f16a652 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -354,11 +354,24 @@ class RelatorioDocumentosAcessoriosView(FilterView): return context +class RelatorioMixin: + def get(self, request, *args, **kwargs): + super(RelatorioMixin, self).get(request) + + is_relatorio = request.GET.get('relatorio', None) + context = self.get_context_data(filter=self.filterset) + + if is_relatorio: + return self.relatorio(request, context) + else: + return self.render_to_response(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, @@ -379,24 +392,13 @@ class RelatorioAtasView(FilterView): return context - def get(self, request, *args, **kwargs): - super(RelatorioAtasView, self).get(request) - - is_relatorio = request.GET.get('relatorio', None) - context = self.get_context_data(filter=self.filterset) - - if is_relatorio: - return relatorio_atas(request, context) - else: - return self.render_to_response(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): @@ -557,23 +559,12 @@ class RelatorioPresencaSessaoView(FilterView): return context - def get(self, request, *args, **kwargs): - super(RelatorioPresencaSessaoView, self).get(request) - - is_relatorio = request.GET.get('relatorio', None) - context = self.get_context_data(filter=self.filterset) - - if is_relatorio: - return relatorio_presenca_sessao(request, context) - else: - return self.render_to_response(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, @@ -617,22 +608,12 @@ class RelatorioHistoricoTramitacaoView(FilterView): return context - def get(self, request, *args, **kwargs): - super(RelatorioHistoricoTramitacaoView, self).get(request) - - is_relatorio = request.GET.get('relatorio', None) - context = self.get_context_data(filter=self.filterset) - - if is_relatorio: - return relatorio_historico_tramitacao(request, context) - else: - return self.render_to_response(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, @@ -677,22 +658,12 @@ class RelatorioDataFimPrazoTramitacaoView(FilterView): return context - def get(self, request, *args, **kwargs): - super(RelatorioDataFimPrazoTramitacaoView, self).get(request) - - is_relatorio = request.GET.get('relatorio', None) - context = self.get_context_data(filter=self.filterset) - - if is_relatorio: - return relatorio_fim_prazo_tramitacao(request, context) - else: - return self.render_to_response(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, @@ -722,21 +693,11 @@ class RelatorioReuniaoView(FilterView): return context - def get(self, request, *args, **kwargs): - super(RelatorioReuniaoView, self).get(request) - - is_relatorio = request.GET.get('relatorio', None) - context = self.get_context_data(filter=self.filterset) - - if is_relatorio: - return relatorio_reuniao(request, context) - else: - return self.render_to_response(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, @@ -765,23 +726,12 @@ class RelatorioAudienciaView(FilterView): return context - def get(self, request, *args, **kwargs): - super(RelatorioAudienciaView, self).get(request) - - is_relatorio = request.GET.get('relatorio', None) - context = self.get_context_data(filter=self.filterset) - - if is_relatorio: - return relatorio_audiencia(request, context) - else: - return self.render_to_response(context) - - -class RelatorioMateriasTramitacaoView(FilterView): +class RelatorioMateriasTramitacaoView(RelatorioMixin, FilterView): model = MateriaLegislativa filterset_class = RelatorioMateriasTramitacaoilterSet template_name = 'base/RelatorioMateriasPorTramitacao_filter.html' + relatorio = relatorio_materia_em_tramitacao def get_context_data(self, **kwargs): context = super(RelatorioMateriasTramitacaoView, @@ -836,22 +786,12 @@ class RelatorioMateriasTramitacaoView(FilterView): return context - def get(self, request, *args, **kwargs): - super(RelatorioMateriasTramitacaoView, self).get(request) - - is_relatorio = request.GET.get('relatorio', None) - context = self.get_context_data(filter=self.filterset) - - if is_relatorio: - return relatorio_materia_em_tramitacao(request, context) - else: - return self.render_to_response(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): @@ -930,21 +870,12 @@ class RelatorioMateriasPorAnoAutorTipoView(FilterView): return context - def get(self, request, *args, **kwargs): - super(RelatorioMateriasPorAnoAutorTipoView, self).get(request) - is_relatorio = request.GET.get('relatorio', None) - context = self.get_context_data(filter=self.filterset) - - if is_relatorio: - return relatorio_materia_por_ano_autor(request, context) - else: - return self.render_to_response(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) @@ -987,21 +918,12 @@ class RelatorioMateriasPorAutorView(FilterView): return context - def get(self, request, *args, **kwargs): - super(RelatorioMateriasPorAutorView, self).get(request) - is_relatorio = request.GET.get('relatorio', None) - context = self.get_context_data(filter=self.filterset) - - if is_relatorio: - return relatorio_materia_por_autor(request, context) - else: - return self.render_to_response(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, @@ -1037,22 +959,11 @@ class RelatorioNormasPublicadasMesView(FilterView): return context - def get(self, request, *args, **kwargs): - super(RelatorioNormasPublicadasMesView, self).get(request) - - is_relatorio = request.GET.get('relatorio', None) - context = self.get_context_data(filter=self.filterset) - - if is_relatorio: - return relatorio_normas_mes(request, context) - else: - return self.render_to_response(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, @@ -1078,18 +989,6 @@ class RelatorioNormasVigenciaView(FilterView): return kwargs - def get(self, request, *args, **kwargs): - super(RelatorioNormasVigenciaView, self).get(request) - - is_relatorio = request.GET.get('relatorio', None) - context = self.get_context_data(filter=self.filterset) - - if is_relatorio: - return relatorio_normas_vigencia(request, context) - else: - return self.render_to_response(context) - - def get_context_data(self, **kwargs): context = super(RelatorioNormasVigenciaView, self).get_context_data(**kwargs) @@ -2173,10 +2072,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, diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index 2505f4a15..16988f0cd 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -1344,261 +1344,7 @@ def resumo_ata_pdf(request,pk): return response - -def relatorio_doc_administrativos(request, context): - base_url = request.build_absolute_uri() - casa = CasaLegislativa.objects.first() - rodape = ' '.join(get_rodape(casa)) - - context.update({'data': dt.today().strftime('%d/%m/%Y')}) - context.update({'rodape': rodape}) - - header_context = {"casa": casa, 'logotipo':casa.logotipo, 'MEDIA_URL': MEDIA_URL} - - html_template = render_to_string('relatorios/relatorio_doc_administrativos.html', 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) - - response = HttpResponse(content_type='application/pdf;') - response['Content-Disposition'] = 'inline; filename=relatorio.pdf' - response['Content-Transfer-Encoding'] = 'binary' - response.write(pdf_file) - - return response - - -def relatorio_materia_em_tramitacao(request, context): - base_url = request.build_absolute_uri() - casa = CasaLegislativa.objects.first() - rodape = ' '.join(get_rodape(casa)) - - context.update({'data': dt.today().strftime('%d/%m/%Y')}) - context.update({'rodape': rodape}) - - header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL} - - html_template = render_to_string('relatorios/relatorio_materias_em_tramitacao.html', 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) - - response = HttpResponse(content_type='application/pdf;') - response['Content-Disposition'] = 'inline; filename=relatorio.pdf' - response['Content-Transfer-Encoding'] = 'binary' - response.write(pdf_file) - - return response - - -def relatorio_materia_por_autor(request, context): - base_url = request.build_absolute_uri() - casa = CasaLegislativa.objects.first() - rodape = ' '.join(get_rodape(casa)) - - context.update({'data': dt.today().strftime('%d/%m/%Y')}) - context.update({'rodape': rodape}) - - header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL} - - html_template = render_to_string('relatorios/relatorio_materias_por_autor.html', 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) - - response = HttpResponse(content_type='application/pdf;') - response['Content-Disposition'] = 'inline; filename=relatorio.pdf' - response['Content-Transfer-Encoding'] = 'binary' - response.write(pdf_file) - - return response - - -def relatorio_materia_por_ano_autor(request, context): - base_url = request.build_absolute_uri() - casa = CasaLegislativa.objects.first() - rodape = ' '.join(get_rodape(casa)) - - context.update({'data': dt.today().strftime('%d/%m/%Y')}) - context.update({'rodape': rodape}) - - header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL} - - html_template = render_to_string('relatorios/relatorio_materias_por_ano_autor.html', 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) - - response = HttpResponse(content_type='application/pdf;') - response['Content-Disposition'] = 'inline; filename=relatorio.pdf' - response['Content-Transfer-Encoding'] = 'binary' - response.write(pdf_file) - - return response - - - -def relatorio_presenca_sessao(request, context): - base_url = request.build_absolute_uri() - casa = CasaLegislativa.objects.first() - rodape = ' '.join(get_rodape(casa)) - - context.update({'data': dt.today().strftime('%d/%m/%Y')}) - context.update({'rodape': rodape}) - - header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL} - - html_template = render_to_string('relatorios/relatorio_presenca_sessao.html', 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) - - response = HttpResponse(content_type='application/pdf;') - response['Content-Disposition'] = 'inline; filename=relatorio.pdf' - response['Content-Transfer-Encoding'] = 'binary' - response.write(pdf_file) - - return response - -def relatorio_atas(request, context): - base_url = request.build_absolute_uri() - casa = CasaLegislativa.objects.first() - rodape = ' '.join(get_rodape(casa)) - - context.update({'data': dt.today().strftime('%d/%m/%Y')}) - context.update({'rodape': rodape}) - - header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL} - - html_template = render_to_string('relatorios/relatorio_atas.html', 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) - - response = HttpResponse(content_type='application/pdf;') - response['Content-Disposition'] = 'inline; filename=relatorio.pdf' - response['Content-Transfer-Encoding'] = 'binary' - response.write(pdf_file) - - return response - -def relatorio_historico_tramitacao(request, context): - base_url = request.build_absolute_uri() - casa = CasaLegislativa.objects.first() - rodape = ' '.join(get_rodape(casa)) - - context.update({'data': dt.today().strftime('%d/%m/%Y')}) - context.update({'rodape': rodape}) - - header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL} - - html_template = render_to_string('relatorios/relatorio_historico_tramitacao.html', 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) - - response = HttpResponse(content_type='application/pdf;') - response['Content-Disposition'] = 'inline; filename=relatorio.pdf' - response['Content-Transfer-Encoding'] = 'binary' - response.write(pdf_file) - - return response - -def relatorio_fim_prazo_tramitacao(request, context): - base_url = request.build_absolute_uri() - casa = CasaLegislativa.objects.first() - rodape = ' '.join(get_rodape(casa)) - - context.update({'data': dt.today().strftime('%d/%m/%Y')}) - context.update({'rodape': rodape}) - - header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL} - - html_template = render_to_string('relatorios/relatorio_fim_prazo_tramitacao.html', 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) - - response = HttpResponse(content_type='application/pdf;') - response['Content-Disposition'] = 'inline; filename=relatorio.pdf' - response['Content-Transfer-Encoding'] = 'binary' - response.write(pdf_file) - - return response - - - -def relatorio_reuniao(request, context): - base_url = request.build_absolute_uri() - casa = CasaLegislativa.objects.first() - rodape = ' '.join(get_rodape(casa)) - - context.update({'data': dt.today().strftime('%d/%m/%Y')}) - context.update({'rodape': rodape}) - - header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL} - - html_template = render_to_string('relatorios/relatorio_reuniao.html', 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) - - response = HttpResponse(content_type='application/pdf;') - response['Content-Disposition'] = 'inline; filename=relatorio.pdf' - response['Content-Transfer-Encoding'] = 'binary' - response.write(pdf_file) - - return response - - - -def relatorio_audiencia(request, context): - base_url = request.build_absolute_uri() - casa = CasaLegislativa.objects.first() - rodape = ' '.join(get_rodape(casa)) - - context.update({'data': dt.today().strftime('%d/%m/%Y')}) - context.update({'rodape': rodape}) - - header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL} - - html_template = render_to_string('relatorios/relatorio_audiencia.html', 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) - - response = HttpResponse(content_type='application/pdf;') - response['Content-Disposition'] = 'inline; filename=relatorio.pdf' - response['Content-Transfer-Encoding'] = 'binary' - response.write(pdf_file) - - return response - - -def relatorio_normas_mes(request, context): - base_url = request.build_absolute_uri() - casa = CasaLegislativa.objects.first() - rodape = ' '.join(get_rodape(casa)) - - context.update({'data': dt.today().strftime('%d/%m/%Y')}) - context.update({'rodape': rodape}) - - header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL} - - html_template = render_to_string('relatorios/relatorio_normas_mes.html', 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) - - response = HttpResponse(content_type='application/pdf;') - response['Content-Disposition'] = 'inline; filename=relatorio.pdf' - response['Content-Transfer-Encoding'] = 'binary' - response.write(pdf_file) - - return response - - -def relatorio_normas_vigencia(request, context): +def cria_relatorio(request, context, html_string): base_url = request.build_absolute_uri() casa = CasaLegislativa.objects.first() rodape = ' '.join(get_rodape(casa)) @@ -1608,7 +1354,7 @@ def relatorio_normas_vigencia(request, context): header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL} - html_template = render_to_string('relatorios/relatorio_normas_vigencia.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) @@ -1620,53 +1366,47 @@ def relatorio_normas_vigencia(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_historico_tramitacao_adm(request, context): - base_url = request.build_absolute_uri() - casa = CasaLegislativa.objects.first() - rodape = ' '.join(get_rodape(casa)) +def relatorio_materia_por_autor(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_materias_por_autor.html') - context.update({'data': dt.today().strftime('%d/%m/%Y')}) - context.update({'rodape': rodape}) +def relatorio_materia_por_ano_autor(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_materias_por_ano_autor.html') - header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL} +def relatorio_presenca_sessao(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_presenca_sessao.html') - html_template = render_to_string('relatorios/relatorio_historico_tramitacao_adm.html', context) - html_header = render_to_string('relatorios/header_ata.html', header_context) +def relatorio_atas(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_atas.html') - pdf_file = make_pdf(base_url=base_url, main_template=html_template, header_template=html_header) +def relatorio_historico_tramitacao(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_historico_tramitacao.html') - response = HttpResponse(content_type='application/pdf;') - response['Content-Disposition'] = 'inline; filename=relatorio.pdf' - response['Content-Transfer-Encoding'] = 'binary' - response.write(pdf_file) +def relatorio_fim_prazo_tramitacao(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_fim_prazo_tramitacao.html') - return response +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_estatisticas_acesso_normas(request, context): - base_url = request.build_absolute_uri() - casa = CasaLegislativa.objects.first() - rodape = ' '.join(get_rodape(casa)) - - context.update({'data': dt.today().strftime('%d/%m/%Y')}) - context.update({'rodape': rodape}) - - header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL} - - html_template = render_to_string('relatorios/relatorio_estatisticas_acesso_normas.html', 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) +def relatorio_normas_mes(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_normas_mes.html') - response = HttpResponse(content_type='application/pdf;') - response['Content-Disposition'] = 'inline; filename=relatorio.pdf' - response['Content-Transfer-Encoding'] = 'binary' - response.write(pdf_file) +def relatorio_normas_vigencia(obj, request, context): + return cria_relatorio(request, context, 'relatorios/relatorio_normas_vigencia.html') - return response +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_sessao_plenaria_pdf(request, pk): base_url=request.build_absolute_uri()