From a551ae7095fdd9c07f0917b733e5e988cd699488 Mon Sep 17 00:00:00 2001 From: joaohortsenado <100957576+joaohortsenado@users.noreply.github.com> Date: Wed, 30 Aug 2023 19:53:27 -0300 Subject: [PATCH 1/3] fix: verifica se existe dispositivo atualizador ao tentar montar nota alteracao (#3669) Co-authored-by: joao --- sapl/compilacao/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sapl/compilacao/views.py b/sapl/compilacao/views.py index 931db7cfd..9afbe3201 100644 --- a/sapl/compilacao/views.py +++ b/sapl/compilacao/views.py @@ -1392,7 +1392,7 @@ class TextEditView(CompMixin, TemplateView): return r def nota_alteracao(self, dispositivo, lista_ta_publicado): - if dispositivo.ta_publicado_id: + if dispositivo.ta_publicado_id and dispositivo.dispositivo_atualizador: d = dispositivo.dispositivo_atualizador.dispositivo_pai if d.auto_inserido: From 0d280006d371d460db018523230cee4b717b048a Mon Sep 17 00:00:00 2001 From: joaohortsenado <100957576+joaohortsenado@users.noreply.github.com> Date: Wed, 30 Aug 2023 19:56:12 -0300 Subject: [PATCH 2/3] feat: adiciona filtro de autor no relatorio de tramitacao com data fim de prazo (#3671) fix: adiciona filtro de autor no relatorio de tramitacao com data fim de prazo Co-authored-by: joao --- sapl/relatorios/forms.py | 11 +++++++++-- sapl/relatorios/views.py | 7 +++++++ .../RelatorioDataFimPrazoTramitacao_filter.html | 3 ++- .../relatorios/relatorio_fim_prazo_tramitacao.html | 3 ++- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/sapl/relatorios/forms.py b/sapl/relatorios/forms.py index 8ac7eca02..59eb2d741 100644 --- a/sapl/relatorios/forms.py +++ b/sapl/relatorios/forms.py @@ -305,6 +305,10 @@ class RelatorioDataFimPrazoTramitacaoFilterSet(django_filters.FilterSet): materia__ano = django_filters.ChoiceFilter(required=False, label='Ano da Matéria', choices=choice_anos_com_materias) + # materia__autores = django_filters.CharFilter(widget=forms.HiddenInput()) + materia__autores = django_filters.ModelChoiceFilter( + label='Autor da Matéria', + queryset=Autor.objects.all(), field_name='materia__autores') @property def qs(self): @@ -317,7 +321,8 @@ class RelatorioDataFimPrazoTramitacaoFilterSet(django_filters.FilterSet): 'tramitacao__unidade_tramitacao_local', 'tramitacao__unidade_tramitacao_destino', 'tramitacao__status', - 'tramitacao__data_fim_prazo'] + 'tramitacao__data_fim_prazo', + 'materia__autores'] def __init__(self, *args, **kwargs): super(RelatorioDataFimPrazoTramitacaoFilterSet, self).__init__( @@ -328,6 +333,7 @@ class RelatorioDataFimPrazoTramitacaoFilterSet(django_filters.FilterSet): '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' + self.filters['materia__autores'].label = 'Autor da Matéria' row1 = to_row([('materia__ano', 12)]) row2 = to_row([('tramitacao__data_fim_prazo', 12)]) @@ -336,6 +342,7 @@ class RelatorioDataFimPrazoTramitacaoFilterSet(django_filters.FilterSet): row4 = to_row( [('materia__tipo', 6), ('tramitacao__status', 6)]) + row5 = to_row([('materia__autores', 12)]) buttons = FormActions( *[ @@ -355,7 +362,7 @@ class RelatorioDataFimPrazoTramitacaoFilterSet(django_filters.FilterSet): self.form.helper.form_method = 'GET' self.form.helper.layout = Layout( Fieldset(_('Tramitações'), - row1, row2, row3, row4, + row1, row2, row3, row4, row5, buttons, ) ) diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index ccc88b86c..98cc47442 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -2171,6 +2171,12 @@ class RelatorioDataFimPrazoTramitacaoView(RelatorioMixin, FilterView): else: context['tipo'] = '' + if self.request.GET['materia__autores']: + autor = int(self.request.GET['materia__autores']) + context['materia__autor'] = (str(Autor.objects.get(id=autor))) + else: + context['materia__autor'] = '' + if self.request.GET['tramitacao__status']: tramitacao_status = self.request.GET['tramitacao__status'] context['tramitacao__status'] = ( @@ -2630,6 +2636,7 @@ class RelatorioNormasVigenciaView(RelatorioMixin, FilterView): return context + class RelatorioHistoricoTramitacaoAdmView(RelatorioMixin, FilterView): model = DocumentoAdministrativo filterset_class = RelatorioHistoricoTramitacaoAdmFilterSet diff --git a/sapl/templates/relatorios/RelatorioDataFimPrazoTramitacao_filter.html b/sapl/templates/relatorios/RelatorioDataFimPrazoTramitacao_filter.html index 953169f7c..017399252 100644 --- a/sapl/templates/relatorios/RelatorioDataFimPrazoTramitacao_filter.html +++ b/sapl/templates/relatorios/RelatorioDataFimPrazoTramitacao_filter.html @@ -17,7 +17,8 @@  Tipo de matéria: {{ tipo }}
 Status de tramitação: {{ tramitacao__status }}
 Local de origem: {{ tramitacao__unidade_tramitacao_local }}
-  Local de destino: {{ tramitacao__unidade_tramitacao_destino }}


+  Local de destino: {{ tramitacao__unidade_tramitacao_destino }}
+  Autor: {{ materia__autor }}


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

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



diff --git a/sapl/templates/relatorios/relatorio_fim_prazo_tramitacao.html b/sapl/templates/relatorios/relatorio_fim_prazo_tramitacao.html index da4172b0b..3bee7c7a6 100644 --- a/sapl/templates/relatorios/relatorio_fim_prazo_tramitacao.html +++ b/sapl/templates/relatorios/relatorio_fim_prazo_tramitacao.html @@ -11,7 +11,8 @@  Tipo de matéria: {{ tipo }}
 Status atual: {{ tramitacao__status }}
 Local de origem: {{ tramitacao__unidade_tramitacao_local }}
-  Local de destino: {{ tramitacao__unidade_tramitacao_destino }}


+  Local de destino: {{ tramitacao__unidade_tramitacao_destino }}
+  Autor: {{ materia__autor }}


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

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



From 4cf5aac2ca88902608e87f7492a09beacd785cf2 Mon Sep 17 00:00:00 2001 From: joaohortsenado <100957576+joaohortsenado@users.noreply.github.com> Date: Wed, 30 Aug 2023 23:04:00 -0300 Subject: [PATCH 3/3] fix: restring acesso ao prometheus metrics para apenas ips locais/invalidos (#3668) Co-authored-by: joao --- sapl/endpoint_restriction_middleware.py | 38 +++++++++++++++++++++++++ sapl/settings.py | 1 + 2 files changed, 39 insertions(+) create mode 100644 sapl/endpoint_restriction_middleware.py diff --git a/sapl/endpoint_restriction_middleware.py b/sapl/endpoint_restriction_middleware.py new file mode 100644 index 000000000..b815b4a2e --- /dev/null +++ b/sapl/endpoint_restriction_middleware.py @@ -0,0 +1,38 @@ +from django.http import HttpResponseForbidden +import logging + +# lista de IPs permitidos (localhost, redes locais, etc) +# https://en.wikipedia.org/wiki/Reserved_IP_addresses +ALLOWED_IPS = [ + '127.0.0.1', + '::1', + '10.0.0.0/8', + '172.16.0.0/12', + '192.168.0.0/16', + 'fc00::/7', + '::1', + 'fe80::/10', + '192.0.2.0/24', + '2001:db8::/32', + '224.0.0.0/4', + 'ff00::/8' +] + +RESTRICTED_ENDPOINTS = ['/metrics'] + + +class EndpointRestrictionMiddleware: + logging.getLogger(__name__) + + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + # IP do cliente + client_ip = request.META.get('REMOTE_ADDR') + + # bloqueia acesso a endpoints restritos para IPs nao permitidos + if request.path in RESTRICTED_ENDPOINTS and client_ip not in ALLOWED_IPS: + return HttpResponseForbidden('Acesso proibido') + + return self.get_response(request) diff --git a/sapl/settings.py b/sapl/settings.py index c23acd084..ba143ca12 100644 --- a/sapl/settings.py +++ b/sapl/settings.py @@ -129,6 +129,7 @@ MIDDLEWARE = [ 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', + 'sapl.endpoint_restriction_middleware.EndpointRestrictionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',