diff --git a/sapl/base/forms.py b/sapl/base/forms.py index 0b99429c8..07528957a 100644 --- a/sapl/base/forms.py +++ b/sapl/base/forms.py @@ -1153,6 +1153,8 @@ class RelatorioMateriasPorAnoAutorTipoFilterSet(django_filters.FilterSet): label='Ano da Matéria', choices=choice_anos_com_materias) + o = AnoNumeroOrderingFilter(help_text='') + class Meta: model = MateriaLegislativa fields = ['ano'] @@ -1182,7 +1184,7 @@ class RelatorioMateriasPorAnoAutorTipoFilterSet(django_filters.FilterSet): self.form.helper = SaplFormHelper() self.form.helper.form_method = 'GET' self.form.helper.layout = Layout( - Fieldset(_('Pesquisa de Matéria por Autor'), + Fieldset(_('Pesquisa de Matéria por Ano Autor Tipo'), row1, buttons, ) ) diff --git a/sapl/base/views.py b/sapl/base/views.py index d08387664..b033d70a9 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -29,7 +29,8 @@ 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 +from sapl.relatorios.views import (relatorio_materia_em_tramitacao, relatorio_materia_por_autor, + relatorio_materia_por_ano_autor) from sapl import settings from sapl.audiencia.models import AudienciaPublica, TipoAudienciaPublica @@ -861,7 +862,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,6 +883,43 @@ class RelatorioMateriasPorAnoAutorTipoView(FilterView): return context + def get(self, request, *args, **kwargs): + super(RelatorioMateriasPorAnoAutorTipoView, self).get(request) + # Se a pesquisa estiver quebrando com a paginação + # Olhe esta função abaixo + # Provavelmente você criou um novo campo no Form/FilterSet + # Então a ordem da URL está diferente + data = self.filterset.data + if data and data.get('tipo') is not None: + url = "&" + str(self.request.environ['QUERY_STRING']) + if url.startswith("&page"): + ponto_comeco = url.find('tipo=') - 1 + url = url[ponto_comeco:] + else: + url = '' + self.filterset.form.fields['o'].label = _('Ordenação') + # é usada essa verificação anônima para quando os documentos administrativos + # estão no modo ostensivo, mas podem existir documentos administrativos + # restritos + if request.user.is_anonymous(): + length = self.object_list.filter(restrito=False).count() + else: + length = self.object_list.count() + + is_relatorio = request.GET.get('is_relatorio', None) + self.paginate_by = None if is_relatorio else self.paginate_by + context = self.get_context_data(filter=self.filterset, + filter_url=url, + numero_res=length + ) + context['show_results'] = show_results_filter_set( + self.request.GET.copy()) + + if is_relatorio: + return relatorio_materia_por_ano_autor(request, context) + else: + return self.render_to_response(context) + class RelatorioMateriasPorAutorView(FilterView): model = MateriaLegislativa diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index 08652232e..2dd156b0d 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -1378,7 +1378,6 @@ def relatorio_materia_em_tramitacao(request, context): header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL} - #import ipdb; ipdb.set_trace(); html_template = render_to_string('relatorios/relatorio_materias_em_tramitacao.html', context) html_header = render_to_string('relatorios/header_ata.html', header_context) @@ -1401,7 +1400,6 @@ def relatorio_materia_por_autor(request, context): header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL} - #import ipdb; ipdb.set_trace(); html_template = render_to_string('relatorios/relatorio_materias_por_autor.html', context) html_header = render_to_string('relatorios/header_ata.html', header_context) @@ -1412,6 +1410,29 @@ def relatorio_materia_por_autor(request, context): 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_sessao_plenaria_pdf(request, pk): diff --git a/sapl/templates/relatorios/relatorio_materias_em_tramitacao.html b/sapl/templates/relatorios/relatorio_materias_em_tramitacao.html index 29e4a7513..312d0d813 100644 --- a/sapl/templates/relatorios/relatorio_materias_em_tramitacao.html +++ b/sapl/templates/relatorios/relatorio_materias_em_tramitacao.html @@ -43,6 +43,13 @@

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 %} 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..10e1ea32a --- /dev/null +++ b/sapl/templates/relatorios/relatorio_materias_por_ano_autor.html @@ -0,0 +1,132 @@ +{% 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 index 64392f562..a4bbbbfe6 100644 --- a/sapl/templates/relatorios/relatorio_materias_por_autor.html +++ b/sapl/templates/relatorios/relatorio_materias_por_autor.html @@ -43,6 +43,12 @@

Matérias por Autor

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


+ {% if object_list|length %}