From a44d7ab5be817aae2ea0c9476044ab6cd3b11af1 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Mon, 3 Aug 2026 03:16:56 -0300 Subject: [PATCH] =?UTF-8?q?Feat(Franco=20da=20Rocha):=20tela=20inicial=20e?= =?UTF-8?q?=20Documento=20Acess=C3=B3rio=20do=20Procurador=20Jur=C3=ADdico?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Customização para o Procurador Jurídico da Câmara de Franco da Rocha, identificado pelo grupo "Operador de Norma Jurídica" (SGVP_GROUP_NORMA): - Tela inicial exibe somente o card "Matérias Legislativas". - Documento Acessório já abre com Tipo="Parecer Jurídico", Nome="Aprovado" e Data=data atual. Os campos seguem editáveis. Adiciona o helper sapl.rules.is_procurador_juridico, usado pelas duas funcionalidades para manter o critério de grupo em um único lugar. Co-Authored-By: Claude Opus 5 --- sapl/base/views.py | 6 ++++++ sapl/materia/views.py | 24 ++++++++++++++++++++++++ sapl/rules/__init__.py | 11 +++++++++++ sapl/templates/index.html | 16 ++++++++++++++++ 4 files changed, 57 insertions(+) diff --git a/sapl/base/views.py b/sapl/base/views.py index 7b7f0d95e..7e4613b08 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -47,6 +47,7 @@ from sapl.parlamentares.models import ( Filiacao, Legislatura, Mandato, Parlamentar) from sapl.protocoloadm.models import (Anexado, Protocolo) from sapl.relatorios.views import (relatorio_estatisticas_acesso_normas) +from sapl.rules import is_procurador_juridico from sapl.sessao.models import (Bancada, SessaoPlenaria) from sapl.settings import EMAIL_SEND_USER, RATE_LIMITER_RATE from sapl.utils import (gerar_hash_arquivo, intervalos_tem_intersecao, mail_service_configured, @@ -77,10 +78,15 @@ class IndexView(TemplateView): # Verifica se é Operador de Protocolo Administrativo context['is_operador_protocolo'] = self.request.user.has_perm( 'protocoloadm.add_documentoadministrativo') + # Procurador Jurídico: tela inicial restrita a Matérias + # Legislativas (customização Franco da Rocha) + context['is_procurador_juridico'] = is_procurador_juridico( + self.request.user) else: context['is_parlamentar'] = False context['autor_id'] = None context['is_operador_protocolo'] = False + context['is_procurador_juridico'] = False return context diff --git a/sapl/materia/views.py b/sapl/materia/views.py index bd4f7b3f4..d621006ee 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -1951,6 +1951,12 @@ def montar_helper_documento_acessorio(self): ' class="btn btn-dark">Cancelar')])) +# Valores pré-preenchidos no Documento Acessório do Procurador Jurídico +# (customização Franco da Rocha) +DESCRICAO_PARECER_JURIDICO = 'Parecer Jurídico' +NOME_PARECER_APROVADO = 'Aprovado' + + class DocumentoAcessorioCrud(MasterDetailCrud): model = DocumentoAcessorio parent_field = 'materia' @@ -1962,10 +1968,28 @@ class DocumentoAcessorioCrud(MasterDetailCrud): class CreateView(MasterDetailCrud.CreateView): form_class = DocumentoAcessorioForm + logger = logging.getLogger(__name__) def get_initial(self): + from sapl.rules import is_procurador_juridico + initial = super(CreateView, self).get_initial() initial['data'] = timezone.now().date() + + # Procurador Jurídico já abre o formulário preenchido como + # Parecer Jurídico aprovado (customização Franco da Rocha). + # Os campos continuam editáveis. + if is_procurador_juridico(self.request.user): + tipo = TipoDocumento.objects.filter( + descricao__iexact=DESCRICAO_PARECER_JURIDICO).first() + if tipo: + initial['tipo'] = tipo + else: + self.logger.warning( + 'Tipo de Documento "%s" não cadastrado: o campo Tipo ' + 'do Documento Acessório não será pré-preenchido.', + DESCRICAO_PARECER_JURIDICO) + initial['nome'] = NOME_PARECER_APROVADO return initial def get_success_url(self): diff --git a/sapl/rules/__init__.py b/sapl/rules/__init__.py index 4867d2ff3..4f09aea2f 100644 --- a/sapl/rules/__init__.py +++ b/sapl/rules/__init__.py @@ -97,3 +97,14 @@ SGVP_GROUPS = [ SGVP_GROUPS_DELETE = [ ] + + +def is_procurador_juridico(user): + """Identifica o Procurador Jurídico pelo grupo SGVP_GROUP_NORMA. + + Customização da Câmara de Franco da Rocha: o usuário desse grupo tem a + tela inicial reduzida ao módulo de Matérias Legislativas e recebe o + Documento Acessório pré-preenchido como Parecer Jurídico aprovado. + """ + return bool(user and user.is_authenticated and + user.groups.filter(name=SGVP_GROUP_NORMA).exists()) diff --git a/sapl/templates/index.html b/sapl/templates/index.html index 15aae85c7..1ba6c1d21 100644 --- a/sapl/templates/index.html +++ b/sapl/templates/index.html @@ -6,6 +6,21 @@ {% block base_content%}
+ {% if is_procurador_juridico %} + +
+
+ +
+

Matérias Legislativas

+

Projetos de lei e proposições

+ +
+ {% else %} {% if is_parlamentar %}
@@ -248,6 +263,7 @@
{% endif %} + {% endif %}
{% endblock %}