Browse Source

feat(proposicoes): remove textos do SAPL e ajuste na cor do header da tabela

pull/3858/head
rangelbruno 10 months ago
parent
commit
618e10d7f7
  1. 4
      CHANGES.md
  2. 26
      README.rst
  3. 4
      docker/startup_scripts/gunicorn.conf.py
  4. 18
      docs/ACESSO_SISTEMA.md
  5. 2
      docs/CODE_OF_CONDUCT.md
  6. 12
      docs/CONFIGURACAO_BD_REMOTO.md
  7. 2
      docs/CONTRIBUTING.md
  8. 4
      docs/FLUXO_PROPOSICOES.md
  9. 16
      docs/GUIA_DO_PROJETO.md
  10. 6
      docs/INSTRUCOES_DEPLOY_TCE.md
  11. 10
      docs/ONLYOFFICE_INTEGRATION.md
  12. 10
      docs/ONLYOFFICE_RESUMO_FINAL.md
  13. 6
      docs/SETUP_ONLYOFFICE.md
  14. 2
      docs/TESTE_RAPIDO_ONLYOFFICE.md
  15. 2
      docs/credits.txt
  16. 4
      docs/deploy.rst
  17. 2
      docs/implementacoes.rst
  18. 14
      docs/instalacao31.rst
  19. 18
      docs/solr.rst
  20. 2
      docs/traducao.rst
  21. 12
      frontend/src/__global/scss/_components.scss
  22. 15
      frontend/src/__global/scss/_responsive.scss
  23. 2
      frontend/src/__global/scss/_variables.scss
  24. 18
      frontend/webpack-stats.json
  25. 4
      release.sh
  26. 2
      sapl/api/serializers.py
  27. 9
      sapl/api/views_health.py
  28. 4
      sapl/base/admin.py
  29. 4
      sapl/base/email_utils.py
  30. 10
      sapl/base/forms.py
  31. 2
      sapl/base/models.py
  32. 2
      sapl/base/receivers.py
  33. 6
      sapl/base/views.py
  34. 2
      sapl/context_processors.py
  35. 10
      sapl/lexml/OAIServer.py
  36. 6
      sapl/locale/en/LC_MESSAGES/django.po
  37. 8
      sapl/locale/es/LC_MESSAGES/django.po
  38. 4
      sapl/locale/pt_BR/LC_MESSAGES/django.po
  39. 2
      sapl/materia/onlyoffice_views.py
  40. 8
      sapl/materia/views.py
  41. 4
      sapl/parlamentares/forms.py
  42. 4
      sapl/parlamentares/views.py
  43. 2
      sapl/protocoloadm/models.py
  44. 2
      sapl/protocoloadm/views.py
  45. 2
      sapl/redireciona_urls/tests.py
  46. 4
      sapl/redireciona_urls/urls.py
  47. 6
      sapl/redireciona_urls/views.py
  48. 2
      sapl/relatorios/templates/pdf_detalhe_materia_gerar.py
  49. 2
      sapl/relatorios/templates/pdf_documento_administrativo_gerar.py
  50. 2
      sapl/relatorios/templates/pdf_etiqueta_protocolo_gerar.py
  51. 2
      sapl/relatorios/templates/pdf_norma_gerar.py
  52. 2
      sapl/relatorios/templates/pdf_pauta_sessao_gerar.py
  53. 2
      sapl/relatorios/templates/pdf_protocolo_gerar.py
  54. 2
      sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py
  55. 60
      sapl/rules/__init__.py
  56. 26
      sapl/rules/apps.py
  57. 4
      sapl/rules/group_administrativo.py
  58. 4
      sapl/rules/group_anonymous.py
  59. 4
      sapl/rules/group_audiencia.py
  60. 4
      sapl/rules/group_autor.py
  61. 4
      sapl/rules/group_comissoes.py
  62. 4
      sapl/rules/group_geral.py
  63. 4
      sapl/rules/group_materia.py
  64. 4
      sapl/rules/group_norma.py
  65. 4
      sapl/rules/group_painel.py
  66. 4
      sapl/rules/group_protocolo.py
  67. 4
      sapl/rules/group_sessao.py
  68. 4
      sapl/rules/group_votante.py
  69. 10
      sapl/rules/map_rules.py
  70. 6
      sapl/rules/tests/test_rules.py
  71. 8
      sapl/settings.py
  72. 2
      sapl/static/sapl/frontend/css/global.054f5747.css
  73. BIN
      sapl/static/sapl/frontend/css/global.054f5747.css.gz
  74. 6
      sapl/tce/README.md
  75. 2
      sapl/tce/admin_views.py
  76. 4
      sapl/templates/admin/base_site.html
  77. 4
      sapl/templates/admin/tce/change_form.html
  78. 4
      sapl/templates/admin/tce/change_list.html
  79. 6
      sapl/templates/ajuda/autor.html
  80. 6
      sapl/templates/ajuda/consultas.html
  81. 6
      sapl/templates/ajuda/envio_proposicao.html
  82. 2
      sapl/templates/ajuda/recebimento_proposicao.html
  83. 2
      sapl/templates/ajuda/relatorios.html
  84. 2
      sapl/templates/auth/user_form.html
  85. 2
      sapl/templates/base.html
  86. 5
      sapl/templates/base/login.html
  87. 4
      sapl/templates/base/recuperar_senha_email.html
  88. 8
      sapl/templates/base/tipoautor_list.html
  89. 2
      sapl/templates/compilacao/text_edit.html
  90. 2
      sapl/templates/email/acompanhar.html
  91. 2
      sapl/templates/email/acompanhar.txt
  92. 2
      sapl/templates/email/acompanhar_documento.html
  93. 2
      sapl/templates/email/acompanhar_documento.txt
  94. 2
      sapl/templates/email/tramitacao.html
  95. 3
      sapl/templates/email/tramitacao.txt
  96. 2
      sapl/templates/fluxo_proposicoes.html
  97. 16
      sapl/templates/guia_projeto.html
  98. 2
      sapl/templates/index.html
  99. 4
      sapl/templates/materia/recibo_proposicao.html
  100. 2
      sapl/templates/painel/index.html

4
CHANGES.md

@ -15,7 +15,7 @@
* Health and Ready endpoints (#3788) * Health and Ready endpoints (#3788)
* Fix read-only mount on k8s * Fix read-only mount on k8s
* Remove setup.py do projeto SAPL * Remove setup.py do projeto Legisinc
3.1.164-RC2 / 2025-09-08 3.1.164-RC2 / 2025-09-08
======================== ========================
@ -160,7 +160,7 @@
* Adiciona controle de visibilidade no módulo de relatorios * Adiciona controle de visibilidade no módulo de relatorios
* Adiciona coluna de justificativa de ausência (#3657) * Adiciona coluna de justificativa de ausência (#3657)
* Adiciona coluna de justificativa de ausência * Adiciona coluna de justificativa de ausência
* Conserta lógica para embutir SAPL em iframe (#3653) * Conserta lógica para embutir Legisinc em iframe (#3653)
* Move relatorios para app de relatorios (#3656) * Move relatorios para app de relatorios (#3656)
* Remove redirect de URLs (#3652) * Remove redirect de URLs (#3652)
* Hot-fix: endpoint do prometheus endpoint URL * Hot-fix: endpoint do prometheus endpoint URL

26
README.rst

@ -1,16 +1,16 @@
*********************************************** ******
SAPL - Sistema de Apoio ao Processo Legislativo Legisinc
*********************************************** ******
UPDATE! [02/08/2022]: Novas alterações foram realizadas nos containers do SAPL e no docker-compose.yaml. Estas mudanças estarão funcionais a partir do próximo release. Enquanto isso não vem, continuem utilizando as versões antigas do docker-compose.yaml. UPDATE! [02/08/2022]: Novas alterações foram realizadas nos containers do Legisinc e no docker-compose.yaml. Estas mudanças estarão funcionais a partir do próximo release. Enquanto isso não vem, continuem utilizando as versões antigas do docker-compose.yaml.
~~**UPDATE! [16/05/2022]: Devido a refatorações recentes no Solr, foi necessårio ~~**UPDATE! [16/05/2022]: Devido a refatorações recentes no Solr, foi necessårio
adaptar o uso deste pelo SAPL. Para isso foram feitas mudanças no docker-compose.yml adaptar o uso deste pelo Legisinc. Para isso foram feitas mudanças no docker-compose.yml
como a adição de um container para o ZooKeeper e upload de arquivo de segurança. como a adição de um container para o ZooKeeper e upload de arquivo de segurança.
Recomendamos fortemente que para a versão 3.1.162 e superior do SAPL seja feito o backup do Recomendamos fortemente que para a versão 3.1.162 e superior do Legisinc seja feito o backup do
Banco de Dados, limpeza dos containers no host (`sudo docker system prune -a -f --volumes`), Banco de Dados, limpeza dos containers no host (`sudo docker system prune -a -f --volumes`),
e consequente instalação dos novos containers a partir da execução do docker-compose. É e consequente instalação dos novos containers a partir da execução do docker-compose. É
importante frisar que o comando `docker system prune` irá apagar TODOS os containers E importante frisar que o comando `docker system prune` irá apagar TODOS os containers E
@ -18,7 +18,7 @@ TODOS os volumes (incluindo o BD) do host. Após o inicio dos novos containers,
com a restauração do BD, pare os containers e reinicie novamente para indexação textual. com a restauração do BD, pare os containers e reinicie novamente para indexação textual.
Além disso, o docker-compose.yml foi movido para a pasta dist/ na raiz do projeto.**~~ Além disso, o docker-compose.yml foi movido para a pasta dist/ na raiz do projeto.**~~
Esta página reúne informações úteis sobre o desenvolvimento atual do SAPL. Esta página reúne informações úteis sobre o desenvolvimento atual do Legisinc.
Isso significa que toda a informação aqui apresentada aplica-se apenas para a versão 3.1 e superior. Isso significa que toda a informação aqui apresentada aplica-se apenas para a versão 3.1 e superior.
@ -27,12 +27,12 @@ Para obter mais informações sobre o projeto como um todo e a versão de trabal
atual do sistema (2.5), visite a página do `projeto na Interlegis wiki <https://colab.interlegis.leg.br/wiki/ProjetoSapl>`_. atual do sistema (2.5), visite a página do `projeto na Interlegis wiki <https://colab.interlegis.leg.br/wiki/ProjetoSapl>`_.
**IMPORTANTE:** A partir da versão 3.1.162 do SAPL, as funcionalidades de recuperar senha, **IMPORTANTE:** A partir da versão 3.1.162 do Legisinc, as funcionalidades de recuperar senha,
acompanhamento de matéria, e acompanhamento de documento exigirão o uso do `Google reCaptcha <https://www.google.com/recaptcha/>`_. Cada casa legislativa será responsável pela geração acompanhamento de matéria, e acompanhamento de documento exigirão o uso do `Google reCaptcha <https://www.google.com/recaptcha/>`_. Cada casa legislativa será responsável pela geração
das chaves do reCaptcha e configuração no SAPL em Sistema -> Parâmetros -> Configurações da Aplicação. das chaves do reCaptcha e configuração no Legisinc em Sistema -> Parâmetros -> Configurações da Aplicação.
Sem essa configuração não serão habilitados os recursos citados anteriormente. Sem essa configuração não serão habilitados os recursos citados anteriormente.
Veja mais detalhes sobre o processo de geração de chaves e configuração neste link https://www.youtube.com/watch?v=6ZCCyBjSJ-c Veja mais detalhes sobre o processo de geração de chaves e configuração neste link https://www.youtube.com/watch?v=6ZCCyBjSJ-c
e no caderno de exercícios do SAPL 3.1 disponível na `Wiki do projeto <https://colab.interlegis.leg.br/wiki/ProjetoSapl3.1>`_ e no caderno de exercícios do Legisinc 3.1 disponível na `Wiki do projeto <https://colab.interlegis.leg.br/wiki/ProjetoSapl3.1>`_
Instalação do Ambiente de Desenvolvimento Instalação do Ambiente de Desenvolvimento
========================================= =========================================
@ -46,12 +46,12 @@ Instalação do Solr
Instruções para Deploy Instruções para Deploy
====================== ======================
`Deploy SAPL com Nginx + Gunicorn <https://github.com/interlegis/sapl/blob/3.1.x/docs/deploy.rst>`_ `Deploy Legisinc com Nginx + Gunicorn <https://github.com/interlegis/sapl/blob/3.1.x/docs/deploy.rst>`_
Instruções para Importação da base mysql 2.5 Instruções para Importação da base mysql 2.5
============================================ ============================================
`Importação da Base do SAPL 2.5 para SAPL 3.1 <https://github.com/interlegis/sapl/wiki/Migra%C3%A7%C3%A3o-sapl-2.5-para-3.1>`_ `Importação da Base do Legisinc 2.5 para Legisinc 3.1 <https://github.com/interlegis/sapl/wiki/Migra%C3%A7%C3%A3o-sapl-2.5-para-3.1>`_
Instruções para Tradução Instruções para Tradução
@ -72,7 +72,7 @@ Orientações gerais sobre o GitHub
Suporte ao utilizadores Suporte ao utilizadores
=================================== ===================================
`Sala do Discord "Somos Interlegis" sobre SAPL <https://discord.gg/fzXSbhZbcy>`_ `Sala do Discord "Somos Interlegis" sobre Legisinc <https://discord.gg/fzXSbhZbcy>`_
Perguntas Frequentes Perguntas Frequentes

4
docker/startup_scripts/gunicorn.conf.py

@ -4,8 +4,8 @@ import os
import pathlib import pathlib
import multiprocessing import multiprocessing
# ---- SAPL app configuration ---- # ---- Legisinc app configuration ----
NAME = "SAPL" NAME = "Legisinc"
DJANGODIR = "/var/interlegis/sapl" DJANGODIR = "/var/interlegis/sapl"
SOCKFILE = f"{DJANGODIR}/run/gunicorn.sock" SOCKFILE = f"{DJANGODIR}/run/gunicorn.sock"
USER = "sapl" USER = "sapl"

18
docs/ACESSO_SISTEMA.md

@ -1,4 +1,4 @@
# 🎉 Sistema SAPL + OnlyOffice - PRONTO PARA USO! # 🎉 Sistema Legisinc + OnlyOffice - PRONTO PARA USO!
## ✅ Status dos Serviços ## ✅ Status dos Serviços
@ -6,7 +6,7 @@ Todos os containers estão rodando e funcionando:
``` ```
✓ PostgreSQL - Porta 5435 (localhost) / 5432 (interno) ✓ PostgreSQL - Porta 5435 (localhost) / 5432 (interno)
SAPL - http://localhost:8000 ✓ Legisinc - http://localhost:8000
✓ OnlyOffice - http://localhost:8002 ✓ OnlyOffice - http://localhost:8002
``` ```
@ -14,7 +14,7 @@ Todos os containers estão rodando e funcionando:
## 🔑 Credenciais de Acesso ## 🔑 Credenciais de Acesso
### Superusuário SAPL ### Superusuário Legisinc
- **URL**: http://localhost:8000/login - **URL**: http://localhost:8000/login
- **Usuário**: `admin` - **Usuário**: `admin`
- **Senha**: `admin` - **Senha**: `admin`
@ -131,7 +131,7 @@ else:
```bash ```bash
cd /home/bruno/sapl/docker cd /home/bruno/sapl/docker
# Ver logs do SAPL # Ver logs do Legisinc
docker logs sapl-dev -f docker logs sapl-dev -f
# Ver logs do OnlyOffice # Ver logs do OnlyOffice
@ -215,10 +215,10 @@ docker exec sapl-dev python manage.py makemigrations
## 🌐 URLs Importantes ## 🌐 URLs Importantes
- **SAPL**: http://localhost:8000 - **Legisinc**: http://localhost:8000
- **Admin Django**: http://localhost:8000/admin - **Admin Django**: http://localhost:8000/admin
- **OnlyOffice Welcome**: http://localhost:8002/welcome/ - **OnlyOffice Welcome**: http://localhost:8002/welcome/
- **API SAPL**: http://localhost:8000/api/ - **API Legisinc**: http://localhost:8000/api/
- **Swagger API**: http://localhost:8000/api/docs/ - **Swagger API**: http://localhost:8000/api/docs/
--- ---
@ -227,7 +227,7 @@ docker exec sapl-dev python manage.py makemigrations
| Serviço | Porta Externa | Porta Interna | | Serviço | Porta Externa | Porta Interna |
|---------|---------------|---------------| |---------|---------------|---------------|
| SAPL | 8000 | 8000 | | Legisinc | 8000 | 8000 |
| OnlyOffice | 8002 | 80 | | OnlyOffice | 8002 | 80 |
| PostgreSQL | 5435 | 5432 | | PostgreSQL | 5435 | 5432 |
@ -248,7 +248,7 @@ curl http://localhost:8002/welcome/
docker logs onlyoffice-documentserver docker logs onlyoffice-documentserver
``` ```
### SAPL não conecta ao banco ### Legisinc não conecta ao banco
**Verificar PostgreSQL:** **Verificar PostgreSQL:**
```bash ```bash
@ -289,7 +289,7 @@ docker exec sapl-dev env | grep DATABASE_URL
## 🎉 TUDO PRONTO! ## 🎉 TUDO PRONTO!
O sistema SAPL com integração OnlyOffice está **100% funcional** e pronto para uso! O sistema Legisinc com integração OnlyOffice está **100% funcional** e pronto para uso!
**Desenvolvido com ❤️ usando Claude Code** **Desenvolvido com ❤️ usando Claude Code**

2
docs/CODE_OF_CONDUCT.md

@ -29,7 +29,7 @@ Os mantenedores do projeto têm o direito e a responsabilidade de remover, edita
Este Código de Conduta aplica-se tanto nos espaços do projeto quanto nos espaços públicos quando um indivíduo representa o projeto ou sua comunidade. Exemplos de representar um projeto ou comunidade incluem o uso de um endereço de e-mail oficial do projeto, postagem através de uma conta oficial em mídias sociais, ou atuando como representante designado em um evento online ou offline. A representação de um projeto pode ser melhor definida e esclarecida pelos responsáveis ​​pelo projeto. Este Código de Conduta aplica-se tanto nos espaços do projeto quanto nos espaços públicos quando um indivíduo representa o projeto ou sua comunidade. Exemplos de representar um projeto ou comunidade incluem o uso de um endereço de e-mail oficial do projeto, postagem através de uma conta oficial em mídias sociais, ou atuando como representante designado em um evento online ou offline. A representação de um projeto pode ser melhor definida e esclarecida pelos responsáveis ​​pelo projeto.
## Execução ## Execução
Instâncias de comportamento abusivo, de assédio ou de outra forma inaceitável podem ser comunicadas ao contactar a equipe do projeto através do COLAB do Interlegis para o projeto do SAPL, todas as informações podem ser acessadas através [deste link](https://colab.interlegis.leg.br/wiki/ProjetoSapl). Instâncias de comportamento abusivo, de assédio ou de outra forma inaceitável podem ser comunicadas ao contactar a equipe do projeto através do COLAB do Interlegis para o projeto do Legisinc, todas as informações podem ser acessadas através [deste link](https://colab.interlegis.leg.br/wiki/ProjetoSapl).
A equipe do projeto irá rever e investigar todas as queixas, e responderá da forma que julgar apropriada às circunstâncias. A equipe do projeto irá rever e investigar todas as queixas, e responderá da forma que julgar apropriada às circunstâncias.
A equipe do projeto buscará manter a confidencialidade em relação ao repórter de um incidente. Mais detalhes sobre políticas de execução específicas podem ser publicados separadamente. A equipe do projeto buscará manter a confidencialidade em relação ao repórter de um incidente. Mais detalhes sobre políticas de execução específicas podem ser publicados separadamente.

12
docs/CONFIGURACAO_BD_REMOTO.md

@ -1,6 +1,6 @@
# Configuração do SAPL com Banco de Dados Remoto # Configuração do Legisinc com Banco de Dados Remoto
Este documento explica como configurar o SAPL para usar um banco de dados PostgreSQL remoto. Este documento explica como configurar o Legisinc para usar um banco de dados PostgreSQL remoto.
## Problemas Corrigidos ## Problemas Corrigidos
@ -84,7 +84,7 @@ No mesmo arquivo, remova `sapldb` das dependências:
### Passo 3: Testar a conexão com o banco remoto ### Passo 3: Testar a conexão com o banco remoto
Antes de iniciar o SAPL, teste a conexão: Antes de iniciar o Legisinc, teste a conexão:
```bash ```bash
docker run --rm postgres:10.5-alpine psql \ docker run --rm postgres:10.5-alpine psql \
@ -145,7 +145,7 @@ Se estiver usando um banco remoto existente, use os usuários já cadastrados ne
``` ```
┌─────────────────┐ ┌─────────────────┐
SAPL │ → Porta 8000:80 │ Legisinc │ → Porta 8000:80
│ (Aplicação) │ │ (Aplicação) │
└────────┬────────┘ └────────┬────────┘
@ -196,7 +196,7 @@ docker logs sapl 2>&1 | grep -i error
# Ver status dos containers # Ver status dos containers
docker-compose ps docker-compose ps
# Reiniciar o SAPL # Reiniciar o Legisinc
docker-compose restart sapl docker-compose restart sapl
# Ver logs em tempo real # Ver logs em tempo real
@ -221,7 +221,7 @@ docker exec -it sapl bash
sapl/ sapl/
├── docker/ ├── docker/
│ ├── docker-compose.yaml # Configuração principal │ ├── docker-compose.yaml # Configuração principal
│ ├── Dockerfile # Imagem do SAPL │ ├── Dockerfile # Imagem do Legisinc
│ └── startup_scripts/ │ └── startup_scripts/
│ ├── gunicorn.conf.py # Configuração do gunicorn │ ├── gunicorn.conf.py # Configuração do gunicorn
│ ├── start.sh # Script de inicialização │ ├── start.sh # Script de inicialização

2
docs/CONTRIBUTING.md

@ -1,4 +1,4 @@
# Contribuindo com SAPL # Contribuindo com Legisinc
Caso queira contribuir com o projeto, talvez seja uma boa ideia começar pelo [README](https://github.com/interlegis/sapl) para conhecer melhor sobre nós. Caso queira contribuir com o projeto, talvez seja uma boa ideia começar pelo [README](https://github.com/interlegis/sapl) para conhecer melhor sobre nós.
Outro documento importante e que deve ser lido é o [Código de Conduta](https://github.com/interlegis/sapl/blob/3.1.x/docs/CODE_OF_CONDUCT.md). Outro documento importante e que deve ser lido é o [Código de Conduta](https://github.com/interlegis/sapl/blob/3.1.x/docs/CODE_OF_CONDUCT.md).

4
docs/FLUXO_PROPOSICOES.md

@ -1,4 +1,4 @@
# Fluxo de Proposições no SAPL # Fluxo de Proposições no Legisinc
## Visão Geral ## Visão Geral
@ -912,4 +912,4 @@ Antes de usar o fluxo de proposições, configure:
--- ---
**Documento criado em**: 2025-10-02 **Documento criado em**: 2025-10-02
**Versão SAPL**: 3.1.164-RC5 **Versão Legisinc**: 3.1.164-RC5

16
docs/GUIA_DO_PROJETO.md

@ -1,8 +1,8 @@
# SAPL - Sistema de Apoio ao Processo Legislativo # Legisinc
## Visão Geral ## Visão Geral
O **SAPL** é um sistema web completo para gerenciamento de processos legislativos em casas legislativas municipais, estaduais e federais. Desenvolvido pelo Interlegis (Senado Federal), o sistema abrange todo o ciclo de vida legislativo, desde o cadastro de parlamentares até a votação e publicação de normas jurídicas. O **Legisinc** é um sistema web completo para gerenciamento de processos legislativos em casas legislativas municipais, estaduais e federais. Desenvolvido pelo Interlegis (Senado Federal), o sistema abrange todo o ciclo de vida legislativo, desde o cadastro de parlamentares até a votação e publicação de normas jurídicas.
**Versão Atual**: 3.1.164-RC5 **Versão Atual**: 3.1.164-RC5
@ -41,7 +41,7 @@ O **SAPL** é um sistema web completo para gerenciamento de processos legislativ
## Módulos Principais ## Módulos Principais
O SAPL está organizado em 9 módulos principais: O Legisinc está organizado em 9 módulos principais:
### 1. **Base** (`sapl.base`) ### 1. **Base** (`sapl.base`)
- Configurações gerais do sistema - Configurações gerais do sistema
@ -285,7 +285,7 @@ Antes de começar a usar o sistema para criar dados, é necessário configurar:
sapl/ sapl/
├── docker/ # Configurações Docker ├── docker/ # Configurações Docker
│ ├── docker-compose.yaml # Orquestração de containers │ ├── docker-compose.yaml # Orquestração de containers
│ └── Dockerfile # Imagem do SAPL │ └── Dockerfile # Imagem do Legisinc
├── frontend/ # Código frontend (Vue.js) ├── frontend/ # Código frontend (Vue.js)
│ ├── src/ │ ├── src/
│ │ ├── __global/ # Estilos e componentes globais │ │ ├── __global/ # Estilos e componentes globais
@ -339,7 +339,7 @@ yarn build
## API REST ## API REST
O SAPL disponibiliza uma API REST completa para integração com outros sistemas. O Legisinc disponibiliza uma API REST completa para integração com outros sistemas.
- **Documentação**: http://localhost:8000/api/docs/ - **Documentação**: http://localhost:8000/api/docs/
- **Schema OpenAPI**: http://localhost:8000/api/schema/ - **Schema OpenAPI**: http://localhost:8000/api/schema/
@ -384,11 +384,11 @@ O SAPL disponibiliza uma API REST completa para integração com outros sistemas
## Tipos de Usuários e Permissões ## Tipos de Usuários e Permissões
O SAPL possui um sistema robusto de controle de acesso com **11 grupos de usuários** diferentes, cada um com permissões específicas para módulos e funcionalidades. O Legisinc possui um sistema robusto de controle de acesso com **11 grupos de usuários** diferentes, cada um com permissões específicas para módulos e funcionalidades.
### Grupos de Usuários Principais ### Grupos de Usuários Principais
#### 1. **Operador Geral** (Superusuário SAPL) #### 1. **Operador Geral** (Superusuário Legisinc)
**Acesso**: Todos os módulos e funcionalidades **Acesso**: Todos os módulos e funcionalidades
- Configurações do sistema - Configurações do sistema
- Gestão de usuários - Gestão de usuários
@ -567,7 +567,7 @@ O sistema cria automaticamente usuários de teste com senha padrão `interlegis`
### Permissões por Tipo de Operação ### Permissões por Tipo de Operação
O SAPL usa 5 radicais de permissão para cada entidade: O Legisinc usa 5 radicais de permissão para cada entidade:
- **`.list_`** - Listar registros (visualizar lista) - **`.list_`** - Listar registros (visualizar lista)
- **`.detail_`** - Ver detalhes de um registro específico - **`.detail_`** - Ver detalhes de um registro específico

6
docs/INSTRUCOES_DEPLOY_TCE.md

@ -22,7 +22,7 @@ git pull origin 3.1.x
### 2. Instalar Dependências Python ### 2. Instalar Dependências Python
```bash ```bash
# Ativar o virtualenv do SAPL (ajuste o caminho conforme necessário) # Ativar o virtualenv do Legisinc (ajuste o caminho conforme necessário)
source /opt/venv/bin/activate # ou o caminho do seu venv source /opt/venv/bin/activate # ou o caminho do seu venv
# Instalar bibliotecas necessárias # Instalar bibliotecas necessárias
@ -111,7 +111,7 @@ sudo systemctl restart nginx
### Arquivos Modificados: ### Arquivos Modificados:
1. `/sapl/templates/admin/base_site.html` - Navbar do SAPL no admin 1. `/sapl/templates/admin/base_site.html` - Navbar do Legisinc no admin
## 🔐 Configurações de Segurança ## 🔐 Configurações de Segurança
@ -268,5 +268,5 @@ Em caso de dúvidas ou problemas:
--- ---
**Data de criação:** 03/10/2025 **Data de criação:** 03/10/2025
**Versão do SAPL:** 3.1.x **Versão do Legisinc:** 3.1.x
**Última atualização:** Após merge com branch principal **Última atualização:** Após merge com branch principal

10
docs/ONLYOFFICE_INTEGRATION.md

@ -1,4 +1,4 @@
# Integração OnlyOffice Document Server no SAPL # Integração OnlyOffice Document Server no Legisinc
## Visão Geral ## Visão Geral
@ -115,7 +115,7 @@ Após criar/editar o texto com OnlyOffice:
│ 1. Acessa editor │ 1. Acessa editor
┌──────────────────┐ ┌──────────────────┐
SAPL (Django) │ │ Legisinc (Django) │
└──────┬───────────┘ └──────┬───────────┘
│ 2. Retorna HTML com script do OnlyOffice │ 2. Retorna HTML com script do OnlyOffice
@ -125,7 +125,7 @@ Após criar/editar o texto com OnlyOffice:
│ 3. Carrega config via /onlyoffice/config │ 3. Carrega config via /onlyoffice/config
┌──────────────────┐ ┌──────────────────┐
SAPL (Django) │ │ Legisinc (Django) │
└──────┬───────────┘ └──────┬───────────┘
│ 4. Retorna configuração JSON │ 4. Retorna configuração JSON
@ -143,7 +143,7 @@ Após criar/editar o texto com OnlyOffice:
│ │ │ │
▼ │ ▼ │
┌──────────────────┐ │ ┌──────────────────┐ │
SAPL (Django) │─────────────┘ │ Legisinc (Django) │─────────────┘
└──────┬───────────┘ └──────┬───────────┘
│ 7. Retorna documento (ou documento em branco) │ 7. Retorna documento (ou documento em branco)
@ -154,7 +154,7 @@ Após criar/editar o texto com OnlyOffice:
│ 9. AutoSave │ 9. AutoSave
┌──────────────────┐ ┌──────────────────┐
SAPL (Django) │ │ Legisinc (Django) │
│ /callback │ │ /callback │
└──────┬───────────┘ └──────┬───────────┘
│ 10. Salva documento no banco │ 10. Salva documento no banco

10
docs/ONLYOFFICE_RESUMO_FINAL.md

@ -5,7 +5,7 @@
**IMPLEMENTAÇÃO 100% COMPLETA E FUNCIONAL** **IMPLEMENTAÇÃO 100% COMPLETA E FUNCIONAL**
Os containers estão rodando com sucesso: Os containers estão rodando com sucesso:
- ✅ SAPL (Python 3.9) na porta 8000 - ✅ Legisinc (Python 3.9) na porta 8000
- ✅ OnlyOffice Document Server na porta 8002 - ✅ OnlyOffice Document Server na porta 8002
## 📦 O que Foi Implementado ## 📦 O que Foi Implementado
@ -113,7 +113,7 @@ DATABASE_URL: postgresql://seu_usuario:sua_senha@seu_host:5432/seu_database
┌──────────────────┐ ┌──────────────────┐
SAPL (Django) │ :8000 │ Legisinc (Django) │ :8000
│ Python 3.9 │ │ Python 3.9 │
└──────┬───────────┘ └──────┬───────────┘
@ -156,7 +156,7 @@ ONLYOFFICE_JWT_ENABLED=False
### Portas: ### Portas:
- **8000**: SAPL Django - **8000**: Legisinc Django
- **8002**: OnlyOffice Document Server - **8002**: OnlyOffice Document Server
## ⚠️ Próximos Passos ## ⚠️ Próximos Passos
@ -177,7 +177,7 @@ Para usar em produção:
ONLYOFFICE_JWT_SECRET="sua-chave-secreta-forte-aqui" ONLYOFFICE_JWT_SECRET="sua-chave-secreta-forte-aqui"
``` ```
2. **Use HTTPS** para OnlyOffice e SAPL 2. **Use HTTPS** para OnlyOffice e Legisinc
3. **Configure recursos adequados**: 3. **Configure recursos adequados**:
- OnlyOffice recomenda mínimo 4GB RAM - OnlyOffice recomenda mínimo 4GB RAM
@ -198,7 +198,7 @@ Para usar em produção:
- JavaScript (OnlyOffice API) - JavaScript (OnlyOffice API)
**Containers:** **Containers:**
- SAPL: Python 3.9 + Django - Legisinc: Python 3.9 + Django
- OnlyOffice: Document Server (latest) - OnlyOffice: Document Server (latest)
**Bibliotecas Adicionadas:** **Bibliotecas Adicionadas:**

6
docs/SETUP_ONLYOFFICE.md

@ -36,7 +36,7 @@ docker-compose -f docker-compose-dev-py39.yml up -d
``` ```
### Portas Utilizadas: ### Portas Utilizadas:
- **8000**: SAPL - **8000**: Legisinc
- **8002**: OnlyOffice Document Server (alterado de 8001 para evitar conflito) - **8002**: OnlyOffice Document Server (alterado de 8001 para evitar conflito)
### Configurar Banco de Dados: ### Configurar Banco de Dados:
@ -79,7 +79,7 @@ Após os containers subirem com sucesso:
Ou abra no navegador: http://localhost:8001/welcome/ Ou abra no navegador: http://localhost:8001/welcome/
2. **Acesse o SAPL**: 2. **Acesse o Legisinc**:
```bash ```bash
# Abra no navegador # Abra no navegador
http://localhost:8000 http://localhost:8000
@ -123,7 +123,7 @@ Se encontrar problemas:
2. Consulte a documentação completa em `ONLYOFFICE_INTEGRATION.md` 2. Consulte a documentação completa em `ONLYOFFICE_INTEGRATION.md`
3. Verifique se todas as portas estão disponíveis: 3. Verifique se todas as portas estão disponíveis:
- 8000: SAPL - 8000: Legisinc
- 8001: OnlyOffice - 8001: OnlyOffice
## Próximos Passos ## Próximos Passos

2
docs/TESTE_RAPIDO_ONLYOFFICE.md

@ -63,7 +63,7 @@ else:
" "
``` ```
### 2️⃣ Acessar o SAPL ### 2️⃣ Acessar o Legisinc
1. Abra o navegador: **http://localhost:8000/login** 1. Abra o navegador: **http://localhost:8000/login**
2. Faça login: 2. Faça login:

2
docs/credits.txt

@ -1,4 +1,4 @@
Créditos do SAPL - até versão 2.5 Créditos do Legisinc - até versão 2.5
================================= =================================
Obrigado aos colaboradores: Obrigado aos colaboradores:

4
docs/deploy.rst

@ -2,13 +2,13 @@
Instruções para fazer o Deploy Instruções para fazer o Deploy
============================== ==============================
Para efeitos deste doc, foram consideradas as tecnologias NGINX + GUNICORN para servir a aplicação Django SAPL. Para efeitos deste doc, foram consideradas as tecnologias NGINX + GUNICORN para servir a aplicação Django Legisinc.
O NGINX é o servidor WEB, e o GUNICORN é o servidor da aplicação para o servidor WEB. O NGINX é o servidor WEB, e o GUNICORN é o servidor da aplicação para o servidor WEB.
É altamente recomendável que para produção o SAPL não seja executado em modo debug. É altamente recomendável que para produção o Legisinc não seja executado em modo debug.
Para isso edite o arquivo ``.env`` criado anteriormente em:: Para isso edite o arquivo ``.env`` criado anteriormente em::
sudo nano /var/interlegis/sapl/sapl/.env sudo nano /var/interlegis/sapl/sapl/.env

2
docs/implementacoes.rst

@ -38,7 +38,7 @@ Boas Práticas
- não use ``django.contrib.auth.models.User`` para utilizar as caracteristicas do model, para isso, use esta função: django.contrib.auth.get_user_model() - não use ``django.contrib.auth.models.User`` para utilizar as caracteristicas do model, para isso, use esta função: django.contrib.auth.get_user_model()
- Seguir esses passos simplificará qualquer customização futura que venha a ser feita na autenticação do usuários ao evitar correções de inúmeros import's e ainda, desta forma, torna a funcionalidade de autenticação reimplementável por qualquer outro projeto que venha usar partes ou o todo do SAPL. - Seguir esses passos simplificará qualquer customização futura que venha a ser feita na autenticação do usuários ao evitar correções de inúmeros import's e ainda, desta forma, torna a funcionalidade de autenticação reimplementável por qualquer outro projeto que venha usar partes ou o todo do Legisinc.
Atenção: Atenção:

14
docs/instalacao31.rst

@ -69,7 +69,7 @@ Clonar o projeto do github, ou fazer um fork e depois clonar
git clone -b 3.1.x --single-branch git://github.com/interlegis/sapl git clone -b 3.1.x --single-branch git://github.com/interlegis/sapl
O comando acima irá clonar a última versão estável do SAPL (3.1.x) O comando acima irá clonar a última versão estável do Legisinc (3.1.x)
Para clonar todo o repositório utilize o comando abaixo: Para clonar todo o repositório utilize o comando abaixo:
git clone git://github.com/interlegis/sapl git clone git://github.com/interlegis/sapl
@ -87,7 +87,7 @@ Clonar o projeto do github, ou fazer um fork e depois clonar
* As configurações e instruções de uso para o git estão espalhadas pela internet e possui muito coisa bacana. As tarefas básicas de git e suas interações com github são tranquilas de se aprender. * As configurações e instruções de uso para o git estão espalhadas pela internet e possui muito coisa bacana. As tarefas básicas de git e suas interações com github são tranquilas de se aprender.
Criar o ambiente virtual de desenvolvimento para o SAPL Criar o ambiente virtual de desenvolvimento para o Legisinc
------------------------------------------------------- -------------------------------------------------------
:: ::
@ -119,7 +119,7 @@ Instalação e configuração das dependências do projeto
sudo -u postgres psql -c "CREATE DATABASE sapl WITH OWNER = sapl ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'pt_BR.UTF-8' LC_CTYPE = 'pt_BR.UTF-8' CONNECTION LIMIT = -1 TEMPLATE template0;" sudo -u postgres psql -c "CREATE DATABASE sapl WITH OWNER = sapl ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'pt_BR.UTF-8' LC_CTYPE = 'pt_BR.UTF-8' CONNECTION LIMIT = -1 TEMPLATE template0;"
* Obs: no ambiente de desenvolvimento, a role deve ter permissão para criar outro banco. Isso é usado pelos testes automatizados. * Obs: no ambiente de desenvolvimento, a role deve ter permissão para criar outro banco. Isso é usado pelos testes automatizados.
* (caso você já possua uma instalação do postrgresql anterior ao processo de instalação do ambiente de desenvolvimento do SAPL em sua máquina e sábia como fazer, esteja livre para proceder como desejar, porém, ao configurar o arquivo ``.env`` no próximo passo, as mesmas definições deverão ser usadas) * (caso você já possua uma instalação do postrgresql anterior ao processo de instalação do ambiente de desenvolvimento do Legisinc em sua máquina e sábia como fazer, esteja livre para proceder como desejar, porém, ao configurar o arquivo ``.env`` no próximo passo, as mesmas definições deverão ser usadas)
* **Ajustar as permissões - onde $USER trocar por usuário**:: * **Ajustar as permissões - onde $USER trocar por usuário**::
@ -181,7 +181,7 @@ Copie a chave que aparecerá, edite o arquivo .env e altere o valor do parâmetr
./manage.py runserver 0.0.0.0:8001 ./manage.py runserver 0.0.0.0:8001
* Acesse o SAPL em:: * Acesse o Legisinc em::
http://localhost:8001/ http://localhost:8001/
@ -192,11 +192,11 @@ Instruções para criação do super usuário e de usuários de testes
python3 manage.py createsuperuser python3 manage.py createsuperuser
* `Os perfis semânticos do SAPL <https://github.com/interlegis/sapl/blob/master/sapl/rules/__init__.py>`_ são fixos e atualizados a cada execução do comando:: * `Os perfis semânticos do Legisinc <https://github.com/interlegis/sapl/blob/master/sapl/rules/__init__.py>`_ são fixos e atualizados a cada execução do comando::
./manage.py migrate ./manage.py migrate
* Os perfis fixos não aceitam customização via admin, porém outros grupos podem ser criados. O SAPL não interferirá no conjunto de permissões definidas em grupos customizados e se comportará diante de usuários segundo seus grupos e suas permissões. * Os perfis fixos não aceitam customização via admin, porém outros grupos podem ser criados. O Legisinc não interferirá no conjunto de permissões definidas em grupos customizados e se comportará diante de usuários segundo seus grupos e suas permissões.
* Para criar os usuários de teste, deve-se seguir os seguintes passos:: * Para criar os usuários de teste, deve-se seguir os seguintes passos::
@ -217,7 +217,7 @@ Instruções para criação do super usuário e de usuários de testes
operador_painel operador_painel
Frontend do SAPL Frontend do Legisinc
============= =============
* Se seu objetivo é preparar o ambiente de desenvolvimento para colaborar com o backend, você não precisa se preocupar com o tutorial abaixo pois na pasta https://github.com/interlegis/sapl/tree/3.1.x/sapl/static/sapl/frontend já está o código oficial de produção do Frontend * Se seu objetivo é preparar o ambiente de desenvolvimento para colaborar com o backend, você não precisa se preocupar com o tutorial abaixo pois na pasta https://github.com/interlegis/sapl/tree/3.1.x/sapl/static/sapl/frontend já está o código oficial de produção do Frontend

18
docs/solr.rst

@ -2,12 +2,12 @@
Instruções para instalar o Solr Instruções para instalar o Solr
================================ ================================
**O servidor do Solr NÃO DEVE SER EXPOSTO NA INTERNET. Assim como o servidor de bancos de dados Postgres ele deve estar acessível pelo SAPL na rede interna (atrás de NATs/firewalls/proxies/etc).** **O servidor do Solr NÃO DEVE SER EXPOSTO NA INTERNET. Assim como o servidor de bancos de dados Postgres ele deve estar acessível pelo Legisinc na rede interna (atrás de NATs/firewalls/proxies/etc).**
Solr é uma plataforma open source de indexação e busca textual utilizada pelo SAPL 3.1 para indexar documentos (normas jurídicas, matérias legislativas e documentos acessórios). Solr é uma plataforma open source de indexação e busca textual utilizada pelo Legisinc 3.1 para indexar documentos (normas jurídicas, matérias legislativas e documentos acessórios).
Observação: Se a execução do SAPL for mediante containers Docker então use o arquivo *docker-compose.yml* disponível em Observação: Se a execução do Legisinc for mediante containers Docker então use o arquivo *docker-compose.yml* disponível em
*https://github.com/interlegis/sapl/blob/3.1.x/dist/docker-compose.yml* (verifique os mapeamentos de volume estão corretos, a verso do SAPL referenciada no arquivo docker-compose.yml, e realize o backup de seu BD **antes** de qualquer tentativa de substituição do arquivo *docker-compose.yml* em uso corrente); *https://github.com/interlegis/sapl/blob/3.1.x/dist/docker-compose.yml* (verifique os mapeamentos de volume estão corretos, a verso do Legisinc referenciada no arquivo docker-compose.yml, e realize o backup de seu BD **antes** de qualquer tentativa de substituição do arquivo *docker-compose.yml* em uso corrente);
1) Faça o download da distribuição *binária* do Apache Solr do site oficial do projeto **http://lucene.apache.org/solr** 1) Faça o download da distribuição *binária* do Apache Solr do site oficial do projeto **http://lucene.apache.org/solr**
@ -25,7 +25,7 @@ Observação: Se a execução do SAPL for mediante containers Docker então use
4) Por meio do browser, acesse a URL **http://localhost:8983** (ou informe o endereço da máquina onde o Solr foi instalado) 4) Por meio do browser, acesse a URL **http://localhost:8983** (ou informe o endereço da máquina onde o Solr foi instalado)
5) Pare o servidor do SAPL; 5) Pare o servidor do Legisinc;
6) Edite o arquivo .env adicionando as seguintes linhas: 6) Edite o arquivo .env adicionando as seguintes linhas:
@ -40,11 +40,11 @@ Observação: Se a execução do SAPL for mediante containers Docker então use
(o valor do campo SOLR_URL deve corresponder à URL acessada no item 3) (o valor do campo SOLR_URL deve corresponder à URL acessada no item 3)
7) Entre no diretório raiz do SAPL e digite o comando: **python3 solr_api.py -c sapl -u http://localhost:8983`** 7) Entre no diretório raiz do Legisinc e digite o comando: **python3 solr_api.py -c sapl -u http://localhost:8983`**
(a URL informada acima deve ser a mesma dos itens 3 e 6) (a URL informada acima deve ser a mesma dos itens 3 e 6)
8) Enquanto o Solr realiza a indexação da base de dados do SAPL, inicie em uma outra tela o SAPL; 8) Enquanto o Solr realiza a indexação da base de dados do Legisinc, inicie em uma outra tela o Legisinc;
9) Após realizados os passos com sucesso, nas telas de busca de Matéria Legislativa e Normas deverá aparecer um botão 9) Após realizados os passos com sucesso, nas telas de busca de Matéria Legislativa e Normas deverá aparecer um botão
de 'Pesquisa Textual' na tela de busca tradicional. de 'Pesquisa Textual' na tela de busca tradicional.
@ -73,7 +73,7 @@ de 'Pesquisa Textual' na tela de busca tradicional.
1. Uma dúvida quanto a indexação do Solr, pelo que entendi de tempos e tempos tenho que rodar o comando para poder indexar novos arquivos certo? 1. Uma dúvida quanto a indexação do Solr, pelo que entendi de tempos e tempos tenho que rodar o comando para poder indexar novos arquivos certo?
Errado. Cada novo documento inserido, atualizado, ou removido do SAPL dispara uma nova indexação somente daquele documento no Solr automaticamente. Errado. Cada novo documento inserido, atualizado, ou removido do Legisinc dispara uma nova indexação somente daquele documento no Solr automaticamente.
2. O comando **python3 solr_api.py -c sapl -u http://localhost:8983** indexa os novos arquivos? 2. O comando **python3 solr_api.py -c sapl -u http://localhost:8983** indexa os novos arquivos?
@ -81,7 +81,7 @@ de 'Pesquisa Textual' na tela de busca tradicional.
3. Ou teria que reindexar do zero com *rebuild_index*? 3. Ou teria que reindexar do zero com *rebuild_index*?
Pode acontecer do Postgres e o Solr se dessincronizarem (ex: o Solr ficou fora do ar por um dia e foram inseridos registros no SAPL). Ou por algum motivo se deseja refazer o índice do Solr. Neste caso pode-se refazer a indexação no Solr com o comando : **python3 manage.py rebuild_index** (direto na linha de comando, a partir da pasta raiz do SAPL). Mas existem maneiras de atualizar somente os documentos inseridos/alterados a partir de uma determinada data ao invés de atualizar tudo do zero de novo. Pode acontecer do Postgres e o Solr se dessincronizarem (ex: o Solr ficou fora do ar por um dia e foram inseridos registros no Legisinc). Ou por algum motivo se deseja refazer o índice do Solr. Neste caso pode-se refazer a indexação no Solr com o comando : **python3 manage.py rebuild_index** (direto na linha de comando, a partir da pasta raiz do Legisinc). Mas existem maneiras de atualizar somente os documentos inseridos/alterados a partir de uma determinada data ao invés de atualizar tudo do zero de novo.
4. Pergunto isso pois estou querendo criar um script para crontab para indexar esses novos arquivos 4. Pergunto isso pois estou querendo criar um script para crontab para indexar esses novos arquivos

2
docs/traducao.rst

@ -3,7 +3,7 @@ Instruções para Tradução
======================== ========================
Nós utilizamos o `Transifex <https://www.transifex.com>`_ para gerenciar as traduções do projeto. Nós utilizamos o `Transifex <https://www.transifex.com>`_ para gerenciar as traduções do projeto.
Se você deseja contribuir, por favor crie uma conta no site e peça para se juntar a nós em `Transifex SAPL Page <https://www.transifex.com/projects/p/sapl>`_. Se você deseja contribuir, por favor crie uma conta no site e peça para se juntar a nós em `Transifex Legisinc Page <https://www.transifex.com/projects/p/sapl>`_.
Assim que for aceito, você já pode começar a traduzir. Assim que for aceito, você já pode começar a traduzir.
Para integrar as últimas traduções ao projeto atual, siga estes passos: Para integrar as últimas traduções ao projeto atual, siga estes passos:

12
frontend/src/__global/scss/_components.scss

@ -78,9 +78,19 @@
thead th { thead th {
background-color: $primary-color; background-color: $primary-color;
color: white; color: white !important;
border-color: $primary-color; border-color: $primary-color;
font-weight: 600; font-weight: 600;
a {
color: white !important;
text-decoration: none;
&:hover {
color: white !important;
text-decoration: underline;
}
}
} }
tbody tr { tbody tr {

15
frontend/src/__global/scss/_responsive.scss

@ -335,3 +335,18 @@
transition-duration: 0.01ms !important; transition-duration: 0.01ms !important;
} }
} }
// ============================================
// SCREEN-SPECIFIC STYLES (não impressão)
// ============================================
// Garantir que os títulos das tabelas sejam brancos em telas
@media screen {
.table thead th {
color: white !important;
a {
color: white !important;
}
}
}

2
frontend/src/__global/scss/_variables.scss

@ -1,5 +1,5 @@
// ============================================ // ============================================
// PALETA DE CORES INSTITUCIONAL SAPL // PALETA DE CORES INSTITUCIONAL Legisinc
// ============================================ // ============================================
// Cores Primárias // Cores Primárias

18
frontend/webpack-stats.json

@ -26,15 +26,15 @@
"path": "/home/bruno/sapl/sapl/static/sapl/frontend/css/compilacao.0baf3580.css.gz", "path": "/home/bruno/sapl/sapl/static/sapl/frontend/css/compilacao.0baf3580.css.gz",
"publicPath": "/static/sapl/frontend/css/compilacao.0baf3580.css.gz" "publicPath": "/static/sapl/frontend/css/compilacao.0baf3580.css.gz"
}, },
"css/global.4212bc6f.css": { "css/global.054f5747.css": {
"name": "css/global.4212bc6f.css", "name": "css/global.054f5747.css",
"path": "/home/bruno/sapl/sapl/static/sapl/frontend/css/global.4212bc6f.css", "path": "/home/bruno/sapl/sapl/static/sapl/frontend/css/global.054f5747.css",
"publicPath": "/static/sapl/frontend/css/global.4212bc6f.css" "publicPath": "/static/sapl/frontend/css/global.054f5747.css"
}, },
"css/global.4212bc6f.css.gz": { "css/global.054f5747.css.gz": {
"name": "css/global.4212bc6f.css.gz", "name": "css/global.054f5747.css.gz",
"path": "/home/bruno/sapl/sapl/static/sapl/frontend/css/global.4212bc6f.css.gz", "path": "/home/bruno/sapl/sapl/static/sapl/frontend/css/global.054f5747.css.gz",
"publicPath": "/static/sapl/frontend/css/global.4212bc6f.css.gz" "publicPath": "/static/sapl/frontend/css/global.054f5747.css.gz"
}, },
"css/painel.e2b9504e.css": { "css/painel.e2b9504e.css": {
"name": "css/painel.e2b9504e.css", "name": "css/painel.e2b9504e.css",
@ -1012,7 +1012,7 @@
"global": [ "global": [
"css/chunk-vendors.045ec640.css", "css/chunk-vendors.045ec640.css",
"js/chunk-vendors.e8ab4373.js", "js/chunk-vendors.e8ab4373.js",
"css/global.4212bc6f.css", "css/global.054f5747.css",
"js/global.b14eb920.js" "js/global.b14eb920.js"
], ],
"painel": [ "painel": [

4
release.sh

@ -98,7 +98,7 @@ function commit_and_push {
git add CHANGES.md git add CHANGES.md
rm latest_changes.md rm latest_changes.md
if prompt_yes_no "${green_color}Do you want to commit SAPL $FINAL_VERSION release locally?${reset_color}"; then if prompt_yes_no "${green_color}Do you want to commit Legisinc $FINAL_VERSION release locally?${reset_color}"; then
git commit -m "Release: $FINAL_VERSION" git commit -m "Release: $FINAL_VERSION"
git tag $FINAL_VERSION git tag $FINAL_VERSION
echo -e "${green_color}Commit and tag created locally!${color_reset}" echo -e "${green_color}Commit and tag created locally!${color_reset}"
@ -110,7 +110,7 @@ function commit_and_push {
echo -e "${red_color}### BEFORE PROCEEDING, MAKE SURE THE NEW VERSION NUMBER AND CHANGES ARE CORRECT!${color_reset}" echo -e "${red_color}### BEFORE PROCEEDING, MAKE SURE THE NEW VERSION NUMBER AND CHANGES ARE CORRECT!${color_reset}"
echo -e "${green_color}Release: $FINAL_VERSION${reset_color}" echo -e "${green_color}Release: $FINAL_VERSION${reset_color}"
if prompt_yes_no "${green_color}Do you want to publish SAPL $FINAL_VERSION release on Github?${reset_color}"; then if prompt_yes_no "${green_color}Do you want to publish Legisinc $FINAL_VERSION release on Github?${reset_color}"; then
echo -e "${green_color}Publishing $FINAL_VERSION on Github...${reset_color}" echo -e "${green_color}Publishing $FINAL_VERSION on Github...${reset_color}"
current_date=$(date +%Y-%m-%d) current_date=$(date +%Y-%m-%d)
git push origin 3.1.x git push origin 3.1.x

2
sapl/api/serializers.py

@ -75,7 +75,7 @@ class CasaLegislativaSerializer(SaplSerializerMixin):
version = serializers.SerializerMethodField() version = serializers.SerializerMethodField()
def get_version(self, obj): def get_version(self, obj):
return settings.SAPL_VERSION return settings.Legisinc_VERSION
class Meta: class Meta:
model = CasaLegislativa model = CasaLegislativa

9
sapl/api/views_health.py

@ -33,7 +33,7 @@ class HealthzView(APIView):
payload = { payload = {
"status": "OK" if ok else "UNHEALTHY", "status": "OK" if ok else "UNHEALTHY",
"checks": {"app": {"ok": ok, "latency_ms": round(ms, 1), "error": msg}}, "checks": {"app": {"ok": ok, "latency_ms": round(ms, 1), "error": msg}},
"version": settings.SAPL_VERSION, "version": settings.Legisinc_VERSION,
"time": timezone.now().isoformat(), "time": timezone.now().isoformat(),
} }
if request.query_params.get("fmt") == "txt": if request.query_params.get("fmt") == "txt":
@ -68,7 +68,7 @@ class ReadyzView(APIView):
payload = { payload = {
"status": "ok" if ok else "unhealthy", "status": "ok" if ok else "unhealthy",
"checks": payload_checks, "checks": payload_checks,
"version": settings.SAPL_VERSION, "version": settings.Legisinc_VERSION,
"time": timezone.now().isoformat(), "time": timezone.now().isoformat(),
} }
if request.query_params.get("fmt") == "txt": if request.query_params.get("fmt") == "txt":
@ -90,9 +90,8 @@ class AppzVersionView(APIView):
def get(self, request): def get(self, request):
try: try:
payload = { payload = {
'name': 'SAPL', 'name': 'Legisinc',
'description': 'Sistema de Apoio ao Processo Legislativo', 'version': settings.Legisinc_VERSION,
'version': settings.SAPL_VERSION,
} }
if request.query_params.get("fmt") == "txt": if request.query_params.get("fmt") == "txt":
return HttpResponse(f"{payload['version']} {payload['name']}", return HttpResponse(f"{payload['version']} {payload['name']}",

4
sapl/base/admin.py

@ -7,8 +7,8 @@ from sapl.utils import register_all_models_in_admin
register_all_models_in_admin(__name__) register_all_models_in_admin(__name__)
admin.site.site_title = 'Administração - SAPL' admin.site.site_title = 'Administração - Legisinc'
admin.site.site_header = 'Administração - SAPL' admin.site.site_header = 'Administração - Legisinc'
class AuditLogAdmin(admin.ModelAdmin): class AuditLogAdmin(admin.ModelAdmin):

4
sapl/base/email_utils.py

@ -126,7 +126,7 @@ def do_envia_email_confirmacao(base_url, casa, tipo, doc_mat, destinatario):
msg = " - Ative o Acompanhamento da Matéria" msg = " - Ative o Acompanhamento da Matéria"
else: else:
msg = " - Ative o Acompanhamento de Documento" msg = " - Ative o Acompanhamento de Documento"
subject = "[SAPL] {} {}".format(str(doc_mat), msg) subject = "[Legisinc] {} {}".format(str(doc_mat), msg)
messages = [] messages = []
recipients = [] recipients = []
@ -233,7 +233,7 @@ def do_envia_email_tramitacao(base_url, tipo, doc_mat, status, unidade_destino):
msg = " - Acompanhamento de Matéria Legislativa" msg = " - Acompanhamento de Matéria Legislativa"
else: else:
msg = " - Acompanhamento de Documento" msg = " - Acompanhamento de Documento"
subject = "[SAPL] {} {}".format(str(doc_mat), msg) subject = "[Legisinc] {} {}".format(str(doc_mat), msg)
connection = get_connection() connection = get_connection()
connection.open() connection.open()

10
sapl/base/forms.py

@ -32,7 +32,7 @@ from sapl.norma.models import NormaJuridica, NormaEstatisticas
from sapl.parlamentares.models import Partido, SessaoLegislativa, \ from sapl.parlamentares.models import Partido, SessaoLegislativa, \
Parlamentar, Votante Parlamentar, Votante
from sapl.protocoloadm.models import DocumentoAdministrativo from sapl.protocoloadm.models import DocumentoAdministrativo
from sapl.rules import SAPL_GROUP_AUTOR, SAPL_GROUP_VOTANTE from sapl.rules import Legisinc_GROUP_AUTOR, Legisinc_GROUP_VOTANTE
from sapl.sessao.models import SessaoPlenaria from sapl.sessao.models import SessaoPlenaria
from sapl.settings import MAX_IMAGE_UPLOAD_SIZE from sapl.settings import MAX_IMAGE_UPLOAD_SIZE
from sapl.utils import (autor_label, autor_modal, ChoiceWithoutValidationField, from sapl.utils import (autor_label, autor_modal, ChoiceWithoutValidationField,
@ -224,7 +224,7 @@ class UserAdminForm(ModelForm):
] + [ ] + [
(p.id, p) for p in Permission.objects.filter( (p.id, p) for p in Permission.objects.filter(
content_type__app_label__in=list( content_type__app_label__in=list(
map(lambda x: x.split('.')[-1], settings.SAPL_APPS)) map(lambda x: x.split('.')[-1], settings.Legisinc_APPS))
).exclude( ).exclude(
user=self.instance user=self.instance
).order_by('content_type__app_label', ).order_by('content_type__app_label',
@ -251,8 +251,8 @@ class UserAdminForm(ModelForm):
if permissions: if permissions:
inst.user_permissions.add(*permissions) inst.user_permissions.add(*permissions)
g_autor = Group.objects.get(name=SAPL_GROUP_AUTOR) g_autor = Group.objects.get(name=Legisinc_GROUP_AUTOR)
g_votante = Group.objects.get(name=SAPL_GROUP_VOTANTE) g_votante = Group.objects.get(name=Legisinc_GROUP_VOTANTE)
if not self.cleaned_data['autor']: if not self.cleaned_data['autor']:
inst.groups.remove(g_autor) inst.groups.remove(g_autor)
@ -564,7 +564,7 @@ class AutorForm(ModelForm):
operadores = forms.ModelMultipleChoiceField( operadores = forms.ModelMultipleChoiceField(
queryset=get_user_model().objects.all(), queryset=get_user_model().objects.all(),
widget=forms.CheckboxSelectMultiple(), widget=forms.CheckboxSelectMultiple(),
label=_('Usuários do SAPL ligados ao autor acima selecionado'), label=_('Usuários do Legisinc ligados ao autor acima selecionado'),
required=False, required=False,
help_text=_( help_text=_(
'Para ser listado aqui, o usuário não pode estar em nenhum outro autor e deve estar marcado como ativo.') 'Para ser listado aqui, o usuário não pode estar em nenhum outro autor e deve estar marcado como ativo.')

2
sapl/base/models.py

@ -322,7 +322,7 @@ class TipoAutor(models.Model):
ContentType, ContentType,
null=True, null=True,
default=None, default=None,
verbose_name=_('Modelagem no SAPL'), verbose_name=_('Modelagem no Legisinc'),
on_delete=models.PROTECT) on_delete=models.PROTECT)
class Meta: class Meta:

2
sapl/base/receivers.py

@ -170,7 +170,7 @@ def cria_models_tipo_autor(app_config=None, verbosity=2, interactive=True,
using=DEFAULT_DB_ALIAS, **kwargs): using=DEFAULT_DB_ALIAS, **kwargs):
print("\n\033[93m\033[1m{}\033[0m".format( print("\n\033[93m\033[1m{}\033[0m".format(
_('Atualizando registros TipoAutor do SAPL:'))) _('Atualizando registros TipoAutor do Legisinc:')))
for model in models_with_gr_for_autor: for model in models_with_gr_for_autor:
content_type = ContentType.objects.get_for_model(model) content_type = ContentType.objects.get_for_model(model)
tipo_autor = TipoAutor.objects.filter( tipo_autor = TipoAutor.objects.filter(

6
sapl/base/views.py

@ -185,7 +185,7 @@ class TipoAutorCrud(CrudAux):
@property @property
def verbose_name(self): def verbose_name(self):
vn = super().verbose_name vn = super().verbose_name
vn = "{} {}".format(vn, _('Externo ao SAPL')) vn = "{} {}".format(vn, _('Externo ao Legisinc'))
return vn return vn
class ListView(CrudAux.ListView): class ListView(CrudAux.ListView):
@ -254,13 +254,13 @@ class AutorCrud(CrudAux):
kwargs['token'] = default_token_generator.make_token(user) kwargs['token'] = default_token_generator.make_token(user)
kwargs['uidb64'] = urlsafe_base64_encode( kwargs['uidb64'] = urlsafe_base64_encode(
force_bytes(user.pk)) force_bytes(user.pk))
assunto = "SAPL - Confirmação de Conta" assunto = "Legisinc - Confirmação de Conta"
full_url = self.request.get_raw_uri() full_url = self.request.get_raw_uri()
url_base = full_url[:full_url.find('sistema') - 1] url_base = full_url[:full_url.find('sistema') - 1]
mensagem = ( mensagem = (
"Este e-mail foi utilizado para fazer cadastro no " + "Este e-mail foi utilizado para fazer cadastro no " +
"SAPL com o perfil de Autor. Agora você pode " + "Legisinc com o perfil de Autor. Agora você pode " +
"criar/editar/enviar Proposições.\n" + "criar/editar/enviar Proposições.\n" +
"Seu nome de usuário é: " + "Seu nome de usuário é: " +
self.request.POST['username'] + "\n" self.request.POST['username'] + "\n"

2
sapl/context_processors.py

@ -34,7 +34,7 @@ def google_recaptcha_configured(request):
@cached_call("site-title", timeout=60 * 2) @cached_call("site-title", timeout=60 * 2)
def enable_sapn(request): def enable_sapn(request):
verbose_name = _('Sistema de Apoio ao Processo Legislativo') \ verbose_name = _('Legisinc') \
if not sapn_is_enabled() \ if not sapn_is_enabled() \
else _('Sistema de Apoio à Publicação de Leis e Normas') else _('Sistema de Apoio à Publicação de Leis e Normas')

10
sapl/lexml/OAIServer.py

@ -184,8 +184,8 @@ class OAIServer:
return '' return ''
def monta_xml(self, urn, norma): def monta_xml(self, urn, norma):
BASE_URL_SAPL = self.config['base_url'] BASE_URL_Legisinc = self.config['base_url']
BASE_URL_SAPL = BASE_URL_SAPL[:BASE_URL_SAPL.find('/', 8)] BASE_URL_Legisinc = BASE_URL_Legisinc[:BASE_URL_Legisinc.find('/', 8)]
publicador = LexmlPublicador.objects.first() publicador = LexmlPublicador.objects.first()
if norma and publicador: if norma and publicador:
@ -201,19 +201,19 @@ class OAIServer:
'rtf': 'application/rtf'} 'rtf': 'application/rtf'}
if texto_integral: if texto_integral:
url_conteudo = BASE_URL_SAPL + texto_integral.url url_conteudo = BASE_URL_Legisinc + texto_integral.url
extensao = texto_integral.url.split('.')[-1] extensao = texto_integral.url.split('.')[-1]
formato = mime_types.get(extensao, 'application/octet-stream') formato = mime_types.get(extensao, 'application/octet-stream')
else: else:
formato = 'text/html' formato = 'text/html'
url_conteudo = BASE_URL_SAPL + reverse('sapl.norma:normajuridica_detail', url_conteudo = BASE_URL_Legisinc + reverse('sapl.norma:normajuridica_detail',
kwargs={'pk': norma.pk}) kwargs={'pk': norma.pk})
element_maker = ElementMaker() element_maker = ElementMaker()
id_publicador = str(publicador.id_publicador) id_publicador = str(publicador.id_publicador)
item_conteudo = element_maker.Item(url_conteudo, formato=formato, idPublicador=id_publicador, item_conteudo = element_maker.Item(url_conteudo, formato=formato, idPublicador=id_publicador,
tipo='conteudo') tipo='conteudo')
oai_lexml.append(item_conteudo) oai_lexml.append(item_conteudo)
url = BASE_URL_SAPL + reverse('sapl.norma:normajuridica_detail', kwargs={'pk': norma.pk}) url = BASE_URL_Legisinc + reverse('sapl.norma:normajuridica_detail', kwargs={'pk': norma.pk})
item_metadado = element_maker.Item(url, formato='text/html', idPublicador=id_publicador, tipo='metadado') item_metadado = element_maker.Item(url, formato='text/html', idPublicador=id_publicador, tipo='metadado')
oai_lexml.append(item_metadado) oai_lexml.append(item_metadado)
documento_individual = element_maker.DocumentoIndividual(urn) documento_individual = element_maker.DocumentoIndividual(urn)

6
sapl/locale/en/LC_MESSAGES/django.po

@ -5,7 +5,7 @@
# Translators: # Translators:
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: SAPL\n" "Project-Id-Version: Legisinc\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-07-20 15:05-0300\n" "POT-Creation-Date: 2015-07-20 15:05-0300\n"
"PO-Revision-Date: 2015-07-17 13:38+0000\n" "PO-Revision-Date: 2015-07-17 13:38+0000\n"
@ -382,7 +382,7 @@ msgid "Autor"
msgstr "" msgstr ""
#: materia/forms.py:127 #: materia/forms.py:127
msgid "Acesso ao SAPL" msgid "Acesso ao Legisinc"
msgstr "" msgstr ""
#: materia/forms.py:144 materia/models.py:213 #: materia/forms.py:144 materia/models.py:213
@ -1699,5 +1699,5 @@ msgid "Sessão: %(sessao_plen)s Data: %(data)s"
msgstr "" msgstr ""
#: templates/base.html:7 #: templates/base.html:7
msgid "SAPL - Sistema de Apoio ao Processo Legislativo" msgid "Legisinc"
msgstr "" msgstr ""

8
sapl/locale/es/LC_MESSAGES/django.po

@ -6,7 +6,7 @@
# johnfelipe <ingenierofelipeurrego@gmail.com>, 2015 # johnfelipe <ingenierofelipeurrego@gmail.com>, 2015
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: SAPL\n" "Project-Id-Version: Legisinc\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-07-20 15:05-0300\n" "POT-Creation-Date: 2015-07-20 15:05-0300\n"
"PO-Revision-Date: 2015-07-18 21:32+0000\n" "PO-Revision-Date: 2015-07-18 21:32+0000\n"
@ -383,8 +383,8 @@ msgid "Autor"
msgstr "Autor" msgstr "Autor"
#: materia/forms.py:127 #: materia/forms.py:127
msgid "Acesso ao SAPL" msgid "Acesso ao Legisinc"
msgstr "Acceso a SAPL" msgstr "Acceso a Legisinc"
#: materia/forms.py:144 materia/models.py:213 #: materia/forms.py:144 materia/models.py:213
msgid "Autoria" msgid "Autoria"
@ -1705,7 +1705,7 @@ msgid "Sessão: %(sessao_plen)s Data: %(data)s"
msgstr "" msgstr ""
#: templates/base.html:7 #: templates/base.html:7
msgid "SAPL - Sistema de Apoio ao Processo Legislativo" msgid "Legisinc"
msgstr "" msgstr ""
#~ msgid "Add pictures" #~ msgid "Add pictures"

4
sapl/locale/pt_BR/LC_MESSAGES/django.po

@ -383,7 +383,7 @@ msgid "Autor"
msgstr "" msgstr ""
#: materia/forms.py:127 #: materia/forms.py:127
msgid "Acesso ao SAPL" msgid "Acesso ao Legisinc"
msgstr "" msgstr ""
#: materia/forms.py:144 materia/models.py:213 #: materia/forms.py:144 materia/models.py:213
@ -1700,5 +1700,5 @@ msgid "Sessão: %(sessao_plen)s Data: %(data)s"
msgstr "" msgstr ""
#: templates/base.html:7 #: templates/base.html:7
msgid "SAPL - Sistema de Apoio ao Processo Legislativo" msgid "Legisinc"
msgstr "" msgstr ""

2
sapl/materia/onlyoffice_views.py

@ -47,7 +47,7 @@ def onlyoffice_config(request, pk):
base_url = get_base_url(request) base_url = get_base_url(request)
# URLs para o OnlyOffice acessar (dentro da rede Docker) # URLs para o OnlyOffice acessar (dentro da rede Docker)
# OnlyOffice precisa acessar o container SAPL pelo nome do serviço # OnlyOffice precisa acessar o container Legisinc pelo nome do serviço
download_url = request.build_absolute_uri( download_url = request.build_absolute_uri(
reverse('sapl.materia:onlyoffice_download', kwargs={'pk': pk}) reverse('sapl.materia:onlyoffice_download', kwargs={'pk': pk})
) )

8
sapl/materia/views.py

@ -1290,11 +1290,11 @@ class HistoricoProposicaoView(PermissionRequiredMixin, ListView):
def get_queryset(self): def get_queryset(self):
qs = super().get_queryset() qs = super().get_queryset()
from sapl.rules import SAPL_GROUP_AUTOR from sapl.rules import Legisinc_GROUP_AUTOR
from django.contrib.auth.models import Group from django.contrib.auth.models import Group
user = self.request.user user = self.request.user
grupo_autor = Group.objects.get(name=SAPL_GROUP_AUTOR) grupo_autor = Group.objects.get(name=Legisinc_GROUP_AUTOR)
if not user.is_superuser and grupo_autor.user_set.filter( if not user.is_superuser and grupo_autor.user_set.filter(
id=user.id).exists(): id=user.id).exists():
@ -2985,7 +2985,7 @@ def get_zip_docacessorios(request, pk):
except Exception as e: except Exception as e:
logger.error("user={}. Um erro inesperado ocorreu na criação do pdf de documentos acessorios: {}" logger.error("user={}. Um erro inesperado ocorreu na criação do pdf de documentos acessorios: {}"
.format(username, str(e))) .format(username, str(e)))
msg = _('Um erro inesperado ocorreu. Entre em contato com o suporte do SAPL.') msg = _('Um erro inesperado ocorreu. Entre em contato com o suporte do Legisinc.')
messages.add_message(request, messages.ERROR, msg) messages.add_message(request, messages.ERROR, msg)
return redirect(reverse('sapl.materia:documentoacessorio_list', return redirect(reverse('sapl.materia:documentoacessorio_list',
kwargs={'pk': pk})) kwargs={'pk': pk}))
@ -3056,7 +3056,7 @@ def get_pdf_docacessorios(request, pk):
except Exception as e: except Exception as e:
logger.error("user= {}.Um erro inesperado ocorreu na criação do pdf de documentos acessorios: {}" logger.error("user= {}.Um erro inesperado ocorreu na criação do pdf de documentos acessorios: {}"
.format(username, str(e))) .format(username, str(e)))
msg = _('Um erro inesperado ocorreu. Entre em contato com o suporte do SAPL.') msg = _('Um erro inesperado ocorreu. Entre em contato com o suporte do Legisinc.')
messages.add_message(request, messages.ERROR, msg) messages.add_message(request, messages.ERROR, msg)
return redirect(reverse('sapl.materia:documentoacessorio_list', return redirect(reverse('sapl.materia:documentoacessorio_list',
kwargs={'pk': pk})) kwargs={'pk': pk}))

4
sapl/parlamentares/forms.py

@ -18,7 +18,7 @@ from image_cropping.widgets import CropWidget, ImageCropWidget
from sapl.base.models import Autor, TipoAutor from sapl.base.models import Autor, TipoAutor
from sapl.crispy_layout_mixin import SaplFormHelper from sapl.crispy_layout_mixin import SaplFormHelper
from sapl.crispy_layout_mixin import form_actions, to_row from sapl.crispy_layout_mixin import form_actions, to_row
from sapl.rules import SAPL_GROUP_VOTANTE from sapl.rules import Legisinc_GROUP_VOTANTE
from sapl.utils import FileFieldCheckMixin from sapl.utils import FileFieldCheckMixin
from .models import (Coligacao, ComposicaoColigacao, Filiacao, Frente, Legislatura, from .models import (Coligacao, ComposicaoColigacao, Filiacao, Frente, Legislatura,
@ -611,7 +611,7 @@ class VotanteForm(ModelForm):
# Cria user # Cria user
u = User.objects.get(username=self.cleaned_data['username']) u = User.objects.get(username=self.cleaned_data['username'])
# Adiciona user ao grupo # Adiciona user ao grupo
g = Group.objects.filter(name=SAPL_GROUP_VOTANTE)[0] g = Group.objects.filter(name=Legisinc_GROUP_VOTANTE)[0]
u.groups.add(g) u.groups.add(g)
votante.user = u votante.user = u

4
sapl/parlamentares/views.py

@ -33,7 +33,7 @@ from sapl.crud.base import (RP_CHANGE, RP_DETAIL, RP_LIST, Crud, CrudAux,
from sapl.materia.models import Autoria, Proposicao, Relatoria from sapl.materia.models import Autoria, Proposicao, Relatoria
from sapl.norma.models import AutoriaNorma, NormaJuridica from sapl.norma.models import AutoriaNorma, NormaJuridica
from sapl.parlamentares.apps import AppConfig from sapl.parlamentares.apps import AppConfig
from sapl.rules import SAPL_GROUP_VOTANTE from sapl.rules import Legisinc_GROUP_VOTANTE
from sapl.utils import (parlamentares_ativos, show_results_filter_set, ratelimit_ip) from sapl.utils import (parlamentares_ativos, show_results_filter_set, ratelimit_ip)
from .forms import (ColigacaoFilterSet, FiliacaoForm, FrenteForm, LegislaturaForm, MandatoForm, from .forms import (ColigacaoFilterSet, FiliacaoForm, FrenteForm, LegislaturaForm, MandatoForm,
@ -109,7 +109,7 @@ class VotanteView(MasterDetailCrud):
def delete(self, *args, **kwargs): def delete(self, *args, **kwargs):
obj = self.get_object() obj = self.get_object()
g = Group.objects.filter(name=SAPL_GROUP_VOTANTE)[0] g = Group.objects.filter(name=Legisinc_GROUP_VOTANTE)[0]
obj.user.groups.remove(g) obj.user.groups.remove(g)
obj.delete() obj.delete()

2
sapl/protocoloadm/models.py

@ -30,7 +30,7 @@ class TipoDocumentoAdministrativo(models.Model):
""" """
uuid4 + filenames diversos apesar de tornar url de um arquivo praticamente uuid4 + filenames diversos apesar de tornar url de um arquivo praticamente
impossível de ser localizado não está controlando o acesso. impossível de ser localizado não está controlando o acesso.
Exemplo: o SAPL está configurado para ser docs adm restritivo porém Exemplo: o Legisinc está configurado para ser docs adm restritivo porém
alguem resolve perga o link e mostrar o tal arquivo para um amigo, ou um alguem resolve perga o link e mostrar o tal arquivo para um amigo, ou um
vizinho de departamento que não possui acesso... ou mesmo alguem que nem ao vizinho de departamento que não possui acesso... ou mesmo alguem que nem ao
menos está logado... este arquivo estará livre menos está logado... este arquivo estará livre

2
sapl/protocoloadm/views.py

@ -142,7 +142,7 @@ def get_pdf_docacessorios(request, pk):
except Exception as e: except Exception as e:
logger.error("user= {}.Um erro inesperado ocorreu na criação do pdf de documentos acessorios: {}" logger.error("user= {}.Um erro inesperado ocorreu na criação do pdf de documentos acessorios: {}"
.format(username, str(e))) .format(username, str(e)))
msg = _('Um erro inesperado ocorreu. Entre em contato com o suporte do SAPL.') msg = _('Um erro inesperado ocorreu. Entre em contato com o suporte do Legisinc.')
messages.add_message(request, messages.ERROR, msg) messages.add_message(request, messages.ERROR, msg)
return redirect(reverse('sapl.materia:documentoacessorio_list', return redirect(reverse('sapl.materia:documentoacessorio_list',
kwargs={'pk': pk})) kwargs={'pk': pk}))

2
sapl/redireciona_urls/tests.py

@ -8,7 +8,7 @@ EMPTY_STRING = ''
class RedirecionaURLsTests(TestCase): class RedirecionaURLsTests(TestCase):
def test_redireciona_index_SAPL(self): def test_redireciona_index_Legisinc(self):
response = self.client.get(reverse( response = self.client.get(reverse(
'sapl.redireciona_urls:redireciona_sapl_index') 'sapl.redireciona_urls:redireciona_sapl_index')
) )

4
sapl/redireciona_urls/urls.py

@ -15,12 +15,12 @@ from .views import (RedirecionaAtasList, RedirecionaComissao,
RedirecionaPresencaParlamentares, RedirecionaPresencaParlamentares,
RedirecionaRelatoriosList, RedirecionaRelatoriosList,
RedirecionaRelatoriosMateriasEmTramitacaoList, RedirecionaRelatoriosMateriasEmTramitacaoList,
RedirecionaSAPLIndex, RedirecionaSessaoPlenaria) RedirecionaLegisincIndex, RedirecionaSessaoPlenaria)
app_name = AppConfig.name app_name = AppConfig.name
urlpatterns = [ urlpatterns = [
url(r'^default_index_html$', url(r'^default_index_html$',
RedirecionaSAPLIndex.as_view(), RedirecionaLegisincIndex.as_view(),
name='redireciona_sapl_index'), name='redireciona_sapl_index'),
url(r'^consultas/parlamentar/parlamentar_', url(r'^consultas/parlamentar/parlamentar_',
RedirecionaParlamentar.as_view(), RedirecionaParlamentar.as_view(),

6
sapl/redireciona_urls/views.py

@ -71,7 +71,7 @@ def has_iframe(url, request):
return url return url
class RedirecionaSAPLIndex(RedirectView): class RedirecionaLegisincIndex(RedirectView):
permanent = True permanent = True
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -473,7 +473,7 @@ class RedirecionaMateriaLegislativaList(RedirectView):
args += "&o=%s" % (EMPTY_STRING) args += "&o=%s" % (EMPTY_STRING)
args += "&materiaassunto__assunto=%s" % (EMPTY_STRING) args += "&materiaassunto__assunto=%s" % (EMPTY_STRING)
args += "&ementa=%s" % (ementa_materia) args += "&ementa=%s" % (ementa_materia)
args += "&salvar=%s" % ('Pesquisar') # Default in both SAPL version args += "&salvar=%s" % ('Pesquisar') # Default in both Legisinc version
url = "%s%s" % (url, args) url = "%s%s" % (url, args)
@ -598,7 +598,7 @@ class RedirecionaNormasJuridicasList(RedirectView):
args += "&data_publicacao_1=%s" % (periodo_final_publicacao) args += "&data_publicacao_1=%s" % (periodo_final_publicacao)
args += "&ementa=%s" % (ementa_norma) args += "&ementa=%s" % (ementa_norma)
args += "&assuntos=%s" % (assuntos_norma) args += "&assuntos=%s" % (assuntos_norma)
args += "&salvar=%s" % ('Pesquisar') # Default in both SAPL version args += "&salvar=%s" % ('Pesquisar') # Default in both Legisinc version
url = "%s%s" % (url, args) url = "%s%s" % (url, args)

2
sapl/relatorios/templates/pdf_detalhe_materia_gerar.py

@ -23,8 +23,6 @@ def cabecalho(dic_inf_basicas, imagem):
tmp += '\t\t\t\t<setFont name="Helvetica" size="16"/>\n' tmp += '\t\t\t\t<setFont name="Helvetica" size="16"/>\n'
tmp += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \ tmp += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \
dic_inf_basicas['nom_camara'] + '</drawString>\n' dic_inf_basicas['nom_camara'] + '</drawString>\n'
tmp += '\t\t\t\t<setFont name="Helvetica" size="14"/>\n'
tmp += '\t\t\t\t<drawString x="5cm" y="26.5cm">Sistema de Apoio ao Processo Legislativo</drawString>\n'
if str(dic_inf_basicas['nom_projeto']) != "" and str(dic_inf_basicas['nom_projeto']) != None: if str(dic_inf_basicas['nom_projeto']) != "" and str(dic_inf_basicas['nom_projeto']) != None:
tmp += '\t\t\t\t<setFont name="Helvetica" size="15"/>\n' tmp += '\t\t\t\t<setFont name="Helvetica" size="15"/>\n'
tmp += '\t\t\t\t<drawCentredString x="10.5cm" y="25.2cm">' + \ tmp += '\t\t\t\t<drawCentredString x="10.5cm" y="25.2cm">' + \

2
sapl/relatorios/templates/pdf_documento_administrativo_gerar.py

@ -23,8 +23,6 @@ def cabecalho(dic_cabecalho, imagem):
tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="15"/>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="15"/>\n'
tmp_data += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \ tmp_data += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \
dic_cabecalho['nom_casa'] + '</drawString>\n' dic_cabecalho['nom_casa'] + '</drawString>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica" size="12"/>\n'
tmp_data += '\t\t\t\t<drawString x="5cm" y="26.6cm">Sistema de Apoio ao Processo Legislativo</drawString>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="13"/>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="13"/>\n'
tmp_data += '\t\t\t\t<drawString x="2.2cm" y="24.6cm">Relatório de Documentos Administrativos</drawString>\n' tmp_data += '\t\t\t\t<drawString x="2.2cm" y="24.6cm">Relatório de Documentos Administrativos</drawString>\n'

2
sapl/relatorios/templates/pdf_etiqueta_protocolo_gerar.py

@ -20,8 +20,6 @@ def cabecalho(dic_cabecalho, imagem):
tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="15"/>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="15"/>\n'
tmp_data += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \ tmp_data += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \
dic_cabecalho['nom_casa'] + '</drawString>\n' dic_cabecalho['nom_casa'] + '</drawString>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica" size="12"/>\n'
tmp_data += '\t\t\t\t<drawString x="5cm" y="26.6cm">Sistema de Apoio ao Processo Legislativo</drawString>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="13"/>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="13"/>\n'
tmp_data += '\t\t\t\t<drawString x="2.2cm" y="24.6cm">Relatório de Controle do Protocolo</drawString>\n' tmp_data += '\t\t\t\t<drawString x="2.2cm" y="24.6cm">Relatório de Controle do Protocolo</drawString>\n'

2
sapl/relatorios/templates/pdf_norma_gerar.py

@ -19,8 +19,6 @@ def cabecalho(inf_basicas_dic, imagem):
tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="15"/>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="15"/>\n'
tmp_data += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \ tmp_data += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \
dic_cabecalho['nom_casa'] + '</drawString>\n' dic_cabecalho['nom_casa'] + '</drawString>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica" size="12"/>\n'
tmp_data += '\t\t\t\t<drawString x="5cm" y="26.6cm">Sistema de Apoio ao Processo Legislativo</drawString>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="13"/>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="13"/>\n'
tmp_data += '\t\t\t\t<drawString x="2.2cm" y="24.6cm">Relatório de Normas Jurídicas</drawString>\n' tmp_data += '\t\t\t\t<drawString x="2.2cm" y="24.6cm">Relatório de Normas Jurídicas</drawString>\n'

2
sapl/relatorios/templates/pdf_pauta_sessao_gerar.py

@ -20,8 +20,6 @@ def cabecalho(inf_basicas_dic, imagem):
tmp += '\t\t\t\t<setFont name="Helvetica-Bold" size="14"/>\n' tmp += '\t\t\t\t<setFont name="Helvetica-Bold" size="14"/>\n'
tmp += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \ tmp += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \
str(inf_basicas_dic["nom_camara"]) + '</drawString>\n' str(inf_basicas_dic["nom_camara"]) + '</drawString>\n'
tmp += '\t\t\t\t<setFont name="Helvetica" size="12"/>\n'
tmp += '\t\t\t\t<drawString x="5cm" y="26.6cm">Sistema de Apoio ao Processo Legislativo</drawString>\n'
tmp += '\t\t\t\t<setFont name="Helvetica-Bold" size="12"/>\n' tmp += '\t\t\t\t<setFont name="Helvetica-Bold" size="12"/>\n'
tmp += '\t\t\t\t<drawString x="4.2cm" y="25cm">Pauta da ' + str(inf_basicas_dic['num_sessao_plen']) + 'ª Reunião ' + str(inf_basicas_dic['nom_sessao']) + ' da ' + str( tmp += '\t\t\t\t<drawString x="4.2cm" y="25cm">Pauta da ' + str(inf_basicas_dic['num_sessao_plen']) + 'ª Reunião ' + str(inf_basicas_dic['nom_sessao']) + ' da ' + str(
inf_basicas_dic['num_sessao_leg']) + 'ª Sessão Legislativa da </drawString>\n' inf_basicas_dic['num_sessao_leg']) + 'ª Sessão Legislativa da </drawString>\n'

2
sapl/relatorios/templates/pdf_protocolo_gerar.py

@ -21,8 +21,6 @@ def cabecalho(dic_cabecalho, imagem):
tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="15"/>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="15"/>\n'
tmp_data += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \ tmp_data += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \
dic_cabecalho['nom_casa'] + '</drawString>\n' dic_cabecalho['nom_casa'] + '</drawString>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica" size="12"/>\n'
tmp_data += '\t\t\t\t<drawString x="5cm" y="26.6cm">Sistema de Apoio ao Processo Legislativo</drawString>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="13"/>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="13"/>\n'
tmp_data += '\t\t\t\t<drawString x="2.2cm" y="24.6cm">Relatório de Controle do Protocolo</drawString>\n' tmp_data += '\t\t\t\t<drawString x="2.2cm" y="24.6cm">Relatório de Controle do Protocolo</drawString>\n'

2
sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py

@ -26,8 +26,6 @@ def cabecalho(inf_basicas_dic, imagem):
tmp += '\t\t\t\t<setFont name="Helvetica-Bold" size="16"/>\n' tmp += '\t\t\t\t<setFont name="Helvetica-Bold" size="16"/>\n'
tmp += '\t\t\t\t<drawString x="5cm" y="27.1cm">' + \ tmp += '\t\t\t\t<drawString x="5cm" y="27.1cm">' + \
str(inf_basicas_dic["nom_camara"]) + '</drawString>\n' str(inf_basicas_dic["nom_camara"]) + '</drawString>\n'
tmp += '\t\t\t\t<setFont name="Helvetica" size="12"/>\n'
tmp += '\t\t\t\t<drawString x="5cm" y="26.6cm">Sistema de Apoio ao Processo Legislativo</drawString>\n'
tmp += '\t\t\t\t<setFont name="Helvetica-Bold" size="12"/>\n' tmp += '\t\t\t\t<setFont name="Helvetica-Bold" size="12"/>\n'
tmp += '\t\t\t\t<drawString x="4.2cm" y="25cm">Resumo da ' + str(inf_basicas_dic['num_sessao_plen']) + 'ª Reunião ' + str(inf_basicas_dic['nom_sessao']) + ' da ' + str( tmp += '\t\t\t\t<drawString x="4.2cm" y="25cm">Resumo da ' + str(inf_basicas_dic['num_sessao_plen']) + 'ª Reunião ' + str(inf_basicas_dic['nom_sessao']) + ' da ' + str(
inf_basicas_dic['num_sessao_leg']) + 'ª Sessão Legislativa da </drawString>\n' inf_basicas_dic['num_sessao_leg']) + 'ª Sessão Legislativa da </drawString>\n'

60
sapl/rules/__init__.py

@ -20,7 +20,7 @@ três permissões registadas na classe Permission:
# o radical .view_ não existia no django quando a app rules foi criada # o radical .view_ não existia no django quando a app rules foi criada
# e portanto não é utilizada # e portanto não é utilizada
No SAPL foram acrescidas em todos os models as duas regras abaixo, adicionadas No Legisinc foram acrescidas em todos os models as duas regras abaixo, adicionadas
com o Signal post_migrate `create_proxy_permissions` com o Signal post_migrate `create_proxy_permissions`
localizado em sapl.rules.apps.py. localizado em sapl.rules.apps.py.
@ -43,7 +43,7 @@ com permissões, sempre é analisado se é apenas um radical ou permissão
completa, sendo apenas um radical, a permissão completa é montada com base completa, sendo apenas um radical, a permissão completa é montada com base
no model associado. no model associado.
NESTE ARQUIVO ESTÃO DEFINIDOS OS RADICAIS E OS GRUPOS DEFAULT DO SAPL NESTE ARQUIVO ESTÃO DEFINIDOS OS RADICAIS E OS GRUPOS DEFAULT DO Legisinc
""" """
@ -55,41 +55,41 @@ __listdetailchange__ = [RP_LIST, RP_DETAIL, RP_CHANGE]
__perms_publicas__ = {RP_LIST, RP_DETAIL} __perms_publicas__ = {RP_LIST, RP_DETAIL}
SAPL_GROUP_ADMINISTRATIVO = _("Operador Administrativo") Legisinc_GROUP_ADMINISTRATIVO = _("Operador Administrativo")
SAPL_GROUP_AUDIENCIA = _("Operador de Audiência") Legisinc_GROUP_AUDIENCIA = _("Operador de Audiência")
SAPL_GROUP_PROTOCOLO = _("Operador de Protocolo Administrativo") Legisinc_GROUP_PROTOCOLO = _("Operador de Protocolo Administrativo")
SAPL_GROUP_COMISSOES = _("Operador de Comissões") Legisinc_GROUP_COMISSOES = _("Operador de Comissões")
SAPL_GROUP_MATERIA = _("Operador de Matéria") Legisinc_GROUP_MATERIA = _("Operador de Matéria")
SAPL_GROUP_NORMA = _("Operador de Norma Jurídica") Legisinc_GROUP_NORMA = _("Operador de Norma Jurídica")
SAPL_GROUP_SESSAO = _("Operador de Sessão Plenária") Legisinc_GROUP_SESSAO = _("Operador de Sessão Plenária")
SAPL_GROUP_PAINEL = _("Operador de Painel Eletrônico") Legisinc_GROUP_PAINEL = _("Operador de Painel Eletrônico")
SAPL_GROUP_GERAL = _("Operador Geral") Legisinc_GROUP_GERAL = _("Operador Geral")
SAPL_GROUP_AUTOR = _("Autor") Legisinc_GROUP_AUTOR = _("Autor")
SAPL_GROUP_VOTANTE = _("Votante") Legisinc_GROUP_VOTANTE = _("Votante")
# TODO - funcionalidade ainda não existe mas está aqui para efeito de anotação # TODO - funcionalidade ainda não existe mas está aqui para efeito de anotação
SAPL_GROUP_LOGIN_SOCIAL = _("Usuários com Login Social") Legisinc_GROUP_LOGIN_SOCIAL = _("Usuários com Login Social")
# ANONYMOUS não é um grupo mas é uma variável usadas nas rules para anotar # ANONYMOUS não é um grupo mas é uma variável usadas nas rules para anotar
# explicitamente models que podem ter ação de usuários anônimos # explicitamente models que podem ter ação de usuários anônimos
# como por exemplo AcompanhamentoMateria # como por exemplo AcompanhamentoMateria
SAPL_GROUP_ANONYMOUS = '' Legisinc_GROUP_ANONYMOUS = ''
SAPL_GROUPS = [ Legisinc_GROUPS = [
SAPL_GROUP_ADMINISTRATIVO, Legisinc_GROUP_ADMINISTRATIVO,
SAPL_GROUP_PROTOCOLO, Legisinc_GROUP_PROTOCOLO,
SAPL_GROUP_COMISSOES, Legisinc_GROUP_COMISSOES,
SAPL_GROUP_MATERIA, Legisinc_GROUP_MATERIA,
SAPL_GROUP_NORMA, Legisinc_GROUP_NORMA,
SAPL_GROUP_SESSAO, Legisinc_GROUP_SESSAO,
SAPL_GROUP_PAINEL, Legisinc_GROUP_PAINEL,
SAPL_GROUP_GERAL, Legisinc_GROUP_GERAL,
SAPL_GROUP_AUTOR, Legisinc_GROUP_AUTOR,
SAPL_GROUP_VOTANTE, Legisinc_GROUP_VOTANTE,
SAPL_GROUP_LOGIN_SOCIAL, Legisinc_GROUP_LOGIN_SOCIAL,
SAPL_GROUP_ANONYMOUS, Legisinc_GROUP_ANONYMOUS,
] ]
SAPL_GROUPS_DELETE = [ Legisinc_GROUPS_DELETE = [
] ]

26
sapl/rules/apps.py

@ -10,10 +10,10 @@ from django.db import models, router
from django.db.utils import DEFAULT_DB_ALIAS from django.db.utils import DEFAULT_DB_ALIAS
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from sapl.rules import (SAPL_GROUP_ADMINISTRATIVO, SAPL_GROUP_COMISSOES, from sapl.rules import (Legisinc_GROUP_ADMINISTRATIVO, Legisinc_GROUP_COMISSOES,
SAPL_GROUP_GERAL, SAPL_GROUP_MATERIA, SAPL_GROUP_NORMA, Legisinc_GROUP_GERAL, Legisinc_GROUP_MATERIA, Legisinc_GROUP_NORMA,
SAPL_GROUP_PAINEL, SAPL_GROUP_PROTOCOLO, Legisinc_GROUP_PAINEL, Legisinc_GROUP_PROTOCOLO,
SAPL_GROUP_SESSAO) Legisinc_GROUP_SESSAO)
class AppConfig(django.apps.AppConfig): class AppConfig(django.apps.AppConfig):
@ -198,21 +198,21 @@ def get_rules():
def cria_usuarios_padrao(self): def cria_usuarios_padrao(self):
for group, user in ( for group, user in (
(SAPL_GROUP_ADMINISTRATIVO, 'operador_administrativo'), (Legisinc_GROUP_ADMINISTRATIVO, 'operador_administrativo'),
(SAPL_GROUP_PROTOCOLO, 'operador_protocoloadm'), (Legisinc_GROUP_PROTOCOLO, 'operador_protocoloadm'),
(SAPL_GROUP_COMISSOES, 'operador_comissoes'), (Legisinc_GROUP_COMISSOES, 'operador_comissoes'),
(SAPL_GROUP_MATERIA, 'operador_materia'), (Legisinc_GROUP_MATERIA, 'operador_materia'),
(SAPL_GROUP_NORMA, 'operador_norma'), (Legisinc_GROUP_NORMA, 'operador_norma'),
(SAPL_GROUP_SESSAO, 'operador_sessao'), (Legisinc_GROUP_SESSAO, 'operador_sessao'),
(SAPL_GROUP_PAINEL, 'operador_painel'), (Legisinc_GROUP_PAINEL, 'operador_painel'),
(SAPL_GROUP_GERAL, 'operador_geral'), (Legisinc_GROUP_GERAL, 'operador_geral'),
): ):
self.cria_usuario(user, group) self.cria_usuario(user, group)
def update_groups(self): def update_groups(self):
print('') print('')
print("\033[93m\033[1m{}\033[0m".format( print("\033[93m\033[1m{}\033[0m".format(
_('Atualizando grupos do SAPL:'))) _('Atualizando grupos do Legisinc:')))
for rules_group in self.rules_patterns: for rules_group in self.rules_patterns:
group_name = rules_group['group'] group_name = rules_group['group']
rules_list = rules_group['rules'] rules_list = rules_group['rules']

4
sapl/rules/group_administrativo.py

@ -1,10 +1,10 @@
from sapl.materia import models as materia from sapl.materia import models as materia
from sapl.protocoloadm import models as protocoloadm from sapl.protocoloadm import models as protocoloadm
from sapl.rules import SAPL_GROUP_ADMINISTRATIVO, __base__, __perms_publicas__ from sapl.rules import Legisinc_GROUP_ADMINISTRATIVO, __base__, __perms_publicas__
rules_group_administrativo = { rules_group_administrativo = {
'group': SAPL_GROUP_ADMINISTRATIVO, 'group': Legisinc_GROUP_ADMINISTRATIVO,
'rules': [ 'rules': [
(materia.MateriaLegislativa, [ (materia.MateriaLegislativa, [
'can_access_impressos'], __perms_publicas__), 'can_access_impressos'], __perms_publicas__),

4
sapl/rules/group_anonymous.py

@ -1,12 +1,12 @@
from sapl.materia import models as materia from sapl.materia import models as materia
from sapl.protocoloadm import models as protocoloadm from sapl.protocoloadm import models as protocoloadm
from sapl.rules import SAPL_GROUP_ANONYMOUS, RP_ADD, RP_DELETE from sapl.rules import Legisinc_GROUP_ANONYMOUS, RP_ADD, RP_DELETE
# não possui efeito e é usada nos testes que verificam se todos os models estão # não possui efeito e é usada nos testes que verificam se todos os models estão
# neste arquivo rules.py # neste arquivo rules.py
rules_group_anonymous = { rules_group_anonymous = {
'group': SAPL_GROUP_ANONYMOUS, 'group': Legisinc_GROUP_ANONYMOUS,
'rules': [ 'rules': [
(materia.AcompanhamentoMateria, [RP_ADD, RP_DELETE], set()), (materia.AcompanhamentoMateria, [RP_ADD, RP_DELETE], set()),
(protocoloadm.AcompanhamentoDocumento, [RP_ADD, RP_DELETE], set()), (protocoloadm.AcompanhamentoDocumento, [RP_ADD, RP_DELETE], set()),

4
sapl/rules/group_audiencia.py

@ -1,7 +1,7 @@
from sapl.audiencia import models as audiencia from sapl.audiencia import models as audiencia
from sapl.rules import SAPL_GROUP_AUDIENCIA, __base__, __perms_publicas__ from sapl.rules import Legisinc_GROUP_AUDIENCIA, __base__, __perms_publicas__
rules_group_audiencia = { rules_group_audiencia = {
'group': SAPL_GROUP_AUDIENCIA, 'group': Legisinc_GROUP_AUDIENCIA,
'rules': [ 'rules': [
(audiencia.AudienciaPublica, __base__, __perms_publicas__), (audiencia.AudienciaPublica, __base__, __perms_publicas__),
(audiencia.TipoAudienciaPublica, __base__, __perms_publicas__), (audiencia.TipoAudienciaPublica, __base__, __perms_publicas__),

4
sapl/rules/group_autor.py

@ -1,8 +1,8 @@
from sapl.compilacao import models as compilacao from sapl.compilacao import models as compilacao
from sapl.materia import models as materia from sapl.materia import models as materia
from sapl.rules import SAPL_GROUP_AUTOR, __base__, __perms_publicas__ from sapl.rules import Legisinc_GROUP_AUTOR, __base__, __perms_publicas__
rules_group_autor = { rules_group_autor = {
'group': SAPL_GROUP_AUTOR, 'group': Legisinc_GROUP_AUTOR,
'rules': [ 'rules': [
(materia.Proposicao, __base__, set()), (materia.Proposicao, __base__, set()),
(materia.HistoricoProposicao, __base__, set()), (materia.HistoricoProposicao, __base__, set()),

4
sapl/rules/group_comissoes.py

@ -1,9 +1,9 @@
from sapl.comissoes import models as comissoes from sapl.comissoes import models as comissoes
from sapl.materia import models as materia from sapl.materia import models as materia
from sapl.rules import SAPL_GROUP_COMISSOES, __base__, __perms_publicas__ from sapl.rules import Legisinc_GROUP_COMISSOES, __base__, __perms_publicas__
rules_group_comissoes = { rules_group_comissoes = {
'group': SAPL_GROUP_COMISSOES, 'group': Legisinc_GROUP_COMISSOES,
'rules': [ 'rules': [
(materia.PautaReuniao, __base__, __perms_publicas__), (materia.PautaReuniao, __base__, __perms_publicas__),
(comissoes.Comissao, __base__, __perms_publicas__), (comissoes.Comissao, __base__, __perms_publicas__),

4
sapl/rules/group_geral.py

@ -9,13 +9,13 @@ from sapl.materia import models as materia
from sapl.norma import models as norma from sapl.norma import models as norma
from sapl.parlamentares import models as parlamentares from sapl.parlamentares import models as parlamentares
from sapl.protocoloadm import models as protocoloadm from sapl.protocoloadm import models as protocoloadm
from sapl.rules import SAPL_GROUP_GERAL, RP_ADD, __base__, __perms_publicas__, \ from sapl.rules import Legisinc_GROUP_GERAL, RP_ADD, __base__, __perms_publicas__, \
__listdetailchange__ __listdetailchange__
from sapl.sessao import models as sessao from sapl.sessao import models as sessao
rules_group_geral = { rules_group_geral = {
'group': SAPL_GROUP_GERAL, 'group': Legisinc_GROUP_GERAL,
'rules': [ 'rules': [
(base.AppConfig, __base__ + [ (base.AppConfig, __base__ + [
'menu_sistemas', 'menu_sistemas',

4
sapl/rules/group_materia.py

@ -2,10 +2,10 @@
from sapl.compilacao import models as compilacao from sapl.compilacao import models as compilacao
from sapl.materia import models as materia from sapl.materia import models as materia
from sapl.norma import models as norma from sapl.norma import models as norma
from sapl.rules import SAPL_GROUP_MATERIA, __base__, __perms_publicas__ from sapl.rules import Legisinc_GROUP_MATERIA, __base__, __perms_publicas__
rules_group_materia = { rules_group_materia = {
'group': SAPL_GROUP_MATERIA, 'group': Legisinc_GROUP_MATERIA,
'rules': [ 'rules': [
(materia.Anexada, __base__, __perms_publicas__), (materia.Anexada, __base__, __perms_publicas__),
(materia.Autoria, __base__, __perms_publicas__), (materia.Autoria, __base__, __perms_publicas__),

4
sapl/rules/group_norma.py

@ -1,9 +1,9 @@
from sapl.compilacao import models as compilacao from sapl.compilacao import models as compilacao
from sapl.norma import models as norma from sapl.norma import models as norma
from sapl.rules import SAPL_GROUP_NORMA, __base__, __perms_publicas__ from sapl.rules import Legisinc_GROUP_NORMA, __base__, __perms_publicas__
rules_group_norma = { rules_group_norma = {
'group': SAPL_GROUP_NORMA, 'group': Legisinc_GROUP_NORMA,
'rules': [ 'rules': [
(norma.NormaJuridica, __base__, __perms_publicas__), (norma.NormaJuridica, __base__, __perms_publicas__),
(norma.NormaRelacionada, __base__, __perms_publicas__), (norma.NormaRelacionada, __base__, __perms_publicas__),

4
sapl/rules/group_painel.py

@ -1,8 +1,8 @@
from sapl.painel import models as painel from sapl.painel import models as painel
from sapl.rules import SAPL_GROUP_PAINEL, __base__, __perms_publicas__ from sapl.rules import Legisinc_GROUP_PAINEL, __base__, __perms_publicas__
rules_group_painel = { rules_group_painel = {
'group': SAPL_GROUP_PAINEL, 'group': Legisinc_GROUP_PAINEL,
'rules': [ 'rules': [
(painel.Painel, __base__, __perms_publicas__), (painel.Painel, __base__, __perms_publicas__),
(painel.Cronometro, __base__, __perms_publicas__), (painel.Cronometro, __base__, __perms_publicas__),

4
sapl/rules/group_protocolo.py

@ -1,11 +1,11 @@
from sapl.compilacao import models as compilacao from sapl.compilacao import models as compilacao
from sapl.materia import models as materia from sapl.materia import models as materia
from sapl.protocoloadm import models as protocoloadm from sapl.protocoloadm import models as protocoloadm
from sapl.rules import SAPL_GROUP_PROTOCOLO, RP_ADD, __base__, __listdetailchange__, \ from sapl.rules import Legisinc_GROUP_PROTOCOLO, RP_ADD, __base__, __listdetailchange__, \
__perms_publicas__ __perms_publicas__
rules_group_protocolo = { rules_group_protocolo = {
'group': SAPL_GROUP_PROTOCOLO, 'group': Legisinc_GROUP_PROTOCOLO,
'rules': [ 'rules': [
(protocoloadm.Protocolo, __base__ + ['action_anular_protocolo'], set()), (protocoloadm.Protocolo, __base__ + ['action_anular_protocolo'], set()),
(protocoloadm.DocumentoAdministrativo, [RP_ADD] + __listdetailchange__, set()), (protocoloadm.DocumentoAdministrativo, [RP_ADD] + __listdetailchange__, set()),

4
sapl/rules/group_sessao.py

@ -1,9 +1,9 @@
from sapl.rules import SAPL_GROUP_SESSAO, __perms_publicas__, __base__ from sapl.rules import Legisinc_GROUP_SESSAO, __perms_publicas__, __base__
from sapl.sessao import models as sessao from sapl.sessao import models as sessao
rules_group_sessao = { rules_group_sessao = {
'group': SAPL_GROUP_SESSAO, 'group': Legisinc_GROUP_SESSAO,
'rules': [ 'rules': [
(sessao.SessaoPlenaria, __base__, __perms_publicas__), (sessao.SessaoPlenaria, __base__, __perms_publicas__),
(sessao.SessaoPlenariaPresenca, __base__, __perms_publicas__), (sessao.SessaoPlenariaPresenca, __base__, __perms_publicas__),

4
sapl/rules/group_votante.py

@ -1,9 +1,9 @@
from sapl.parlamentares import models as parlamentares from sapl.parlamentares import models as parlamentares
from sapl.rules import SAPL_GROUP_VOTANTE from sapl.rules import Legisinc_GROUP_VOTANTE
rules_group_votante = { rules_group_votante = {
'group': SAPL_GROUP_VOTANTE, 'group': Legisinc_GROUP_VOTANTE,
'rules': [ 'rules': [
(parlamentares.Votante, ['can_vote'], set()) (parlamentares.Votante, ['can_vote'], set())
] ]

10
sapl/rules/map_rules.py

@ -1,4 +1,4 @@
from sapl.rules import SAPL_GROUP_LOGIN_SOCIAL from sapl.rules import Legisinc_GROUP_LOGIN_SOCIAL
from sapl.rules.group_administrativo import rules_group_administrativo from sapl.rules.group_administrativo import rules_group_administrativo
from sapl.rules.group_anonymous import rules_group_anonymous from sapl.rules.group_anonymous import rules_group_anonymous
from sapl.rules.group_audiencia import rules_group_audiencia from sapl.rules.group_audiencia import rules_group_audiencia
@ -13,7 +13,7 @@ from sapl.rules.group_sessao import rules_group_sessao
from sapl.rules.group_votante import rules_group_votante from sapl.rules.group_votante import rules_group_votante
rules_group_login_social = { rules_group_login_social = {
'group': SAPL_GROUP_LOGIN_SOCIAL, 'group': Legisinc_GROUP_LOGIN_SOCIAL,
'rules': [] 'rules': []
} }
""" """
@ -33,7 +33,7 @@ todos as rules de groups são um dicionario com duas chaves: 'group' e 'rules'
exemplo: exemplo:
rules_group_exemplo = { rules_group_exemplo = {
'group': SAPL_GROUP_EXEMPLO, 'group': Legisinc_GROUP_EXEMPLO,
'rules': [ 'rules': [
( (
model_exemplo1, model_exemplo1,
@ -49,7 +49,7 @@ rules_group_exemplo = {
} }
rules_group_exemplo['rules'][0] rules_group_exemplo['rules'][0]
1 significa q usuários que estão no grupo SAPL_GROUP_EXEMPLO 1 significa q usuários que estão no grupo Legisinc_GROUP_EXEMPLO
podem acessar o que está em rules_group_exemplo['rules'][0][1], ou seja, podem acessar o que está em rules_group_exemplo['rules'][0][1], ou seja,
listar e ver os detalhes de model_exemplo1 listar e ver os detalhes de model_exemplo1
@ -60,7 +60,7 @@ rules_group_exemplo['rules'][0]
-------------------------- --------------------------
rules_group_exemplo['rules'][1] rules_group_exemplo['rules'][1]
1 significa q usuários que estão no grupo SAPL_GROUP_EXEMPLO 1 significa q usuários que estão no grupo Legisinc_GROUP_EXEMPLO
podem acessar o que está em rules_group_exemplo['rules'][1][1], ou seja, podem acessar o que está em rules_group_exemplo['rules'][1][1], ou seja,
listar, ver detalhes, editar, apagar e adicionar registros de model_exemplo2 listar, ver detalhes, editar, apagar e adicionar registros de model_exemplo2

6
sapl/rules/tests/test_rules.py

@ -12,13 +12,13 @@ from sapl.compilacao.models import (PerfilEstruturalTextoArticulado,
TipoDispositivoRelationship) TipoDispositivoRelationship)
from sapl.materia.models import AcompanhamentoMateria from sapl.materia.models import AcompanhamentoMateria
from sapl.protocoloadm.models import AcompanhamentoDocumento from sapl.protocoloadm.models import AcompanhamentoDocumento
from sapl.rules import __base__, SAPL_GROUPS, map_rules, RP_LIST, RP_DETAIL, RP_ADD, RP_CHANGE, RP_DELETE from sapl.rules import __base__, Legisinc_GROUPS, map_rules, RP_LIST, RP_DETAIL, RP_ADD, RP_CHANGE, RP_DELETE
from sapl.test_urls import create_perms_post_migrate from sapl.test_urls import create_perms_post_migrate
from scripts.lista_permissions_in_decorators import \ from scripts.lista_permissions_in_decorators import \
lista_permissions_in_decorators lista_permissions_in_decorators
from scripts.lista_urls import lista_urls from scripts.lista_urls import lista_urls
sapl_appconfs = [apps.get_app_config(n[5:]) for n in settings.SAPL_APPS] sapl_appconfs = [apps.get_app_config(n[5:]) for n in settings.Legisinc_APPS]
sapl_models = [] sapl_models = []
for app in sapl_appconfs: for app in sapl_appconfs:
@ -26,7 +26,7 @@ for app in sapl_appconfs:
sapl_models.reverse() sapl_models.reverse()
@pytest.mark.parametrize('group_item', SAPL_GROUPS) @pytest.mark.parametrize('group_item', Legisinc_GROUPS)
def test_groups_in_rules_patterns(group_item): def test_groups_in_rules_patterns(group_item):
test = False test = False

8
sapl/settings.py

@ -43,15 +43,15 @@ ALLOWED_HOSTS = ['*']
LOGIN_REDIRECT_URL = '/' LOGIN_REDIRECT_URL = '/'
LOGIN_URL = '/login/?next=' LOGIN_URL = '/login/?next='
SAPL_VERSION = '3.1.164-RC5' Legisinc_VERSION = '3.1.164-RC5'
if DEBUG: if DEBUG:
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
else: else:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# SAPL business apps in dependency order # Legisinc business apps in dependency order
SAPL_APPS = ( Legisinc_APPS = (
'sapl.audiencia', 'sapl.audiencia',
'sapl.base', 'sapl.base',
'sapl.crud', 'sapl.crud',
@ -101,7 +101,7 @@ INSTALLED_APPS = (
'django_prometheus', 'django_prometheus',
) + SAPL_APPS ) + Legisinc_APPS
# FTS = Full Text Search # FTS = Full Text Search
# Desabilita a indexação textual até encontramos uma solução para a issue # Desabilita a indexação textual até encontramos uma solução para a issue

2
sapl/static/sapl/frontend/css/global.4212bc6f.css → sapl/static/sapl/frontend/css/global.054f5747.css

File diff suppressed because one or more lines are too long

BIN
sapl/static/sapl/frontend/css/global.4212bc6f.css.gz → sapl/static/sapl/frontend/css/global.054f5747.css.gz

Binary file not shown.

6
sapl/tce/README.md

@ -125,7 +125,7 @@ Todas as rotas estão disponíveis em `/tce/api/`:
### 1. Registrar no settings.py ### 1. Registrar no settings.py
```python ```python
SAPL_APPS = ( Legisinc_APPS = (
... ...
'sapl.tce', 'sapl.tce',
) )
@ -278,11 +278,11 @@ Algumas funcionalidades estão com implementação simplificada e devem ser inte
Para contribuir com o módulo TCE: Para contribuir com o módulo TCE:
1. Seguir os padrões de código do SAPL 1. Seguir os padrões de código do Legisinc
2. Adicionar testes unitários 2. Adicionar testes unitários
3. Documentar novas funcionalidades 3. Documentar novas funcionalidades
4. Manter compatibilidade com a API REST 4. Manter compatibilidade com a API REST
## 📄 Licença ## 📄 Licença
Este módulo segue a mesma licença do projeto SAPL. Este módulo segue a mesma licença do projeto Legisinc.

2
sapl/tce/admin_views.py

@ -14,7 +14,7 @@ import json
def tce_admin_index(request): def tce_admin_index(request):
""" """
Dashboard principal do TCE no admin Dashboard principal do TCE no admin
Com navbar e footer padrão do SAPL Com navbar e footer padrão do Legisinc
""" """
context = { context = {
'title': 'Tribunal de Contas (TCE)', 'title': 'Tribunal de Contas (TCE)',

4
sapl/templates/admin/base_site.html

@ -30,7 +30,7 @@
padding-top: 0 !important; padding-top: 0 !important;
} }
/* Estilos completos do navbar do SAPL */ /* Estilos completos do navbar do Legisinc */
#sapl-admin-navbar { #sapl-admin-navbar {
position: relative; position: relative;
z-index: 1050; z-index: 1050;
@ -175,7 +175,7 @@
{% block nav-global %}{% endblock %} {% block nav-global %}{% endblock %}
{% block breadcrumbs %} {% block breadcrumbs %}
<!-- Navbar do SAPL --> <!-- Navbar do Legisinc -->
<div id="sapl-admin-navbar"> <div id="sapl-admin-navbar">
<nav class="navbar"> <nav class="navbar">
<div class="container-fluid"> <div class="container-fluid">

4
sapl/templates/admin/tce/change_form.html

@ -30,7 +30,7 @@
padding-top: 0 !important; padding-top: 0 !important;
} }
/* Estilos completos do navbar do SAPL */ /* Estilos completos do navbar do Legisinc */
#sapl-admin-navbar { #sapl-admin-navbar {
position: relative; position: relative;
z-index: 1050; z-index: 1050;
@ -175,7 +175,7 @@
{% block nav-global %}{% endblock %} {% block nav-global %}{% endblock %}
{% block breadcrumbs %} {% block breadcrumbs %}
<!-- Navbar do SAPL --> <!-- Navbar do Legisinc -->
<div id="sapl-admin-navbar"> <div id="sapl-admin-navbar">
<nav class="navbar"> <nav class="navbar">
<div class="container-fluid"> <div class="container-fluid">

4
sapl/templates/admin/tce/change_list.html

@ -30,7 +30,7 @@
padding-top: 0 !important; padding-top: 0 !important;
} }
/* Estilos completos do navbar do SAPL */ /* Estilos completos do navbar do Legisinc */
#sapl-admin-navbar { #sapl-admin-navbar {
position: relative; position: relative;
z-index: 1050; z-index: 1050;
@ -175,7 +175,7 @@
{% block nav-global %}{% endblock %} {% block nav-global %}{% endblock %}
{% block breadcrumbs %} {% block breadcrumbs %}
<!-- Navbar do SAPL --> <!-- Navbar do Legisinc -->
<div id="sapl-admin-navbar"> <div id="sapl-admin-navbar">
<nav class="navbar"> <nav class="navbar">
<div class="container-fluid"> <div class="container-fluid">

6
sapl/templates/ajuda/autor.html

@ -14,7 +14,7 @@ Nota: Antes por&eacute;m deve ser cadastrado os tipos de autores na tabela
Tipo de Autor e tamb&eacute;m j&aacute; tem que ter sido Tipo de Autor e tamb&eacute;m j&aacute; tem que ter sido
atualizado o m&oacute;dulo Parlamentar.<br /> atualizado o m&oacute;dulo Parlamentar.<br />
Ao autor parlamentar ou comissão deve ser concedido um nome de usu&aacute;rio (login) e Ao autor parlamentar ou comissão deve ser concedido um nome de usu&aacute;rio (login) e
senha para acesso ao SAPL, para que ele possa elaborar e fazer o envio de senha para acesso ao Legisinc, para que ele possa elaborar e fazer o envio de
proposi&ccedil;&otilde;es por meio eletr&ocirc;nico.<br /> proposi&ccedil;&otilde;es por meio eletr&ocirc;nico.<br />
Para atribuir a autoria da mat&eacute;ria legislativa ao parlamentar &eacute; Para atribuir a autoria da mat&eacute;ria legislativa ao parlamentar &eacute;
@ -117,11 +117,11 @@ na caixa Partido o partido do autor.</font></p>
</center> </center>
<br /> <br />
Logo abaixo, no grupo de campos rotulado &ldquo;Cadastro para Logo abaixo, no grupo de campos rotulado &ldquo;Cadastro para
Acesso ao SAPL&rdquo;, marque &ldquo;Sim&rdquo; para Acesso ao Legisinc&rdquo;, marque &ldquo;Sim&rdquo; para
conceder ao autor acesso ao sistema para fins de conceder ao autor acesso ao sistema para fins de
apresenta&ccedil;&atilde;o de proposi&ccedil;&atilde;o. apresenta&ccedil;&atilde;o de proposi&ccedil;&atilde;o.
Nesse caso, crie e informe no campo &ldquo;Login&rdquo; um nome Nesse caso, crie e informe no campo &ldquo;Login&rdquo; um nome
de usu&aacute;rio para que o autor utilize no acesso ao SAPL. Se a de usu&aacute;rio para que o autor utilize no acesso ao Legisinc. Se a
Casa Legislativa n&atilde;o fizer uso do m&oacute;dulo de envio Casa Legislativa n&atilde;o fizer uso do m&oacute;dulo de envio
de proposi&ccedil;&otilde;es, marque de proposi&ccedil;&otilde;es, marque
&ldquo;N&atilde;o&rdquo;. Tamb&eacute;m, elimine o login caso n&atilde;o tenha &ldquo;N&atilde;o&rdquo;. Tamb&eacute;m, elimine o login caso n&atilde;o tenha

6
sapl/templates/ajuda/consultas.html

@ -42,14 +42,14 @@ para a impress&atilde;o, sem as margens laterais e superior. Para
imprimir o texto desejado utilize a fun&ccedil;&atilde;o imprimir o texto desejado utilize a fun&ccedil;&atilde;o
Impress&atilde;o do browser que estiver usando.<br /> Impress&atilde;o do browser que estiver usando.<br />
A op&ccedil;&atilde;o &ldquo;Ajuda&rdquo; contem o A op&ccedil;&atilde;o &ldquo;Ajuda&rdquo; contem o
manual do sistema SAPL.<br /> manual do sistema Legisinc.<br />
As op&ccedil;&otilde;es, Impress&atilde;o, Ajuda e As op&ccedil;&otilde;es, Impress&atilde;o, Ajuda e
Consultas por palavra chave, est&atilde;o presentes em todas as Consultas por palavra chave, est&atilde;o presentes em todas as
telas do sistema.<br /> telas do sistema.<br />
O item &ldquo;Copyright Interlegis&rdquo; contem a O item &ldquo;Copyright Interlegis&rdquo; contem a
licen&ccedil;a de uso, c&oacute;pia, licen&ccedil;a de uso, c&oacute;pia,
distribui&ccedil;&atilde;o e modifica&ccedil;&atilde;o distribui&ccedil;&atilde;o e modifica&ccedil;&atilde;o
do Sistema de Apoio ao Processo Legislativo.<br /> do Legisinc.<br />
<br /> <br />
<h2><a NAME="cons_cons">Consultas</a></h2> <h2><a NAME="cons_cons">Consultas</a></h2>
<br /> <br />
@ -641,7 +641,7 @@ Um asterisco &eacute; um operador de truncamento. Diferente dos outros operadore
A frase que &eacute; colocada entre aspas duplas &ldquo;, coincide apenas com registros que contenham esta frase literalmente, como foi digitada. <br /> A frase que &eacute; colocada entre aspas duplas &ldquo;, coincide apenas com registros que contenham esta frase literalmente, como foi digitada. <br />
&nbsp;&nbsp;&ldquo;desafeta&ccedil;&atilde;o de &aacute;rea p&uacute;blica&ldquo; <br /> &nbsp;&nbsp;&ldquo;desafeta&ccedil;&atilde;o de &aacute;rea p&uacute;blica&ldquo; <br />
&nbsp;&nbsp;... n&atilde;o apresenta &ldquo;desafeta&ccedil;&atilde;o de &aacute;reas p&uacute;blicas&ldquo; . <br /><br> &nbsp;&nbsp;... n&atilde;o apresenta &ldquo;desafeta&ccedil;&atilde;o de &aacute;reas p&uacute;blicas&ldquo; . <br /><br>
A partir da vers&atilde;o 2.0 do SAPL passou a ser A partir da vers&atilde;o 2.0 do Legisinc passou a ser
poss&iacute;vel tamb&eacute;m a <span poss&iacute;vel tamb&eacute;m a <span
style="font-weight: bold;">pesquisa por palavra contida no style="font-weight: bold;">pesquisa por palavra contida no
texto da norma jur&iacute;dica</span>. Basta informar a texto da norma jur&iacute;dica</span>. Basta informar a

6
sapl/templates/ajuda/envio_proposicao.html

@ -12,7 +12,7 @@
Este M&oacute;dulo permite a um usu&aacute;rio com o perfil Este M&oacute;dulo permite a um usu&aacute;rio com o perfil
<b>&ldquo;Autor&rdquo;</b> (normalmente, um parlamentar) fazer o envio <b>&ldquo;Autor&rdquo;</b> (normalmente, um parlamentar) fazer o envio
de proposi&ccedil;&otilde;es em meio eletr&ocirc;nico, por de proposi&ccedil;&otilde;es em meio eletr&ocirc;nico, por
meio do SAPL.<br /> meio do Legisinc.<br />
<br /> <br />
O acesso a este m&oacute;dulo se d&aacute; por login O acesso a este m&oacute;dulo se d&aacute; por login
espec&iacute;fico, feito pelo autor, utilizando o nome de espec&iacute;fico, feito pelo autor, utilizando o nome de
@ -118,8 +118,8 @@ Integral: Criar Texto em XML</font></p>
<p><font style="font-size: 11pt;" size="3">Caso <p><font style="font-size: 11pt;" size="3">Caso
marcado, o sistema permitir&aacute; a edi&ccedil;&atilde;o marcado, o sistema permitir&aacute; a edi&ccedil;&atilde;o
do texto da proposi&ccedil;&atilde;o no pr&oacute;prio do texto da proposi&ccedil;&atilde;o no pr&oacute;prio
SAPL; ela ter&aacute; um formato padronizado, definido pelo Legisinc; ela ter&aacute; um formato padronizado, definido pelo
administrador do SAPL.</font></p> administrador do Legisinc.</font></p>
</td> </td>
</tr> </tr>
<tr valign="top"> <tr valign="top">

2
sapl/templates/ajuda/recebimento_proposicao.html

@ -50,7 +50,7 @@ estado de proposi&ccedil;&otilde;es:<br />
<ul> <ul>
<li><b>Proposi&ccedil;&otilde;es N&atilde;o <li><b>Proposi&ccedil;&otilde;es N&atilde;o
Recebidas:</b> Proposi&ccedil;&otilde;es que Recebidas:</b> Proposi&ccedil;&otilde;es que
j&aacute; foram enviadas pelo autor via SAPL, &agrave;s quais j&aacute; foram enviadas pelo autor via Legisinc, &agrave;s quais
ainda n&atilde;o foi dado o recebimento. Aguardam a informa&ccedil;&atilde;o do c&oacute;digo de seguran&ccedil;a</li> ainda n&atilde;o foi dado o recebimento. Aguardam a informa&ccedil;&atilde;o do c&oacute;digo de seguran&ccedil;a</li>
<li><b>Proposi&ccedil;&otilde;es&nbsp; <li><b>Proposi&ccedil;&otilde;es&nbsp;
N&atilde;o Incorporadas</b>: N&atilde;o Incorporadas</b>:

2
sapl/templates/ajuda/relatorios.html

@ -97,7 +97,7 @@ Um asterisco &eacute; um operador de truncamento. Diferente dos outros operadore
A frase que &eacute; colocada entre aspas duplas &ldquo;, coincide apenas com registros que contenham esta frase literalmente, como foi digitada. <br /> A frase que &eacute; colocada entre aspas duplas &ldquo;, coincide apenas com registros que contenham esta frase literalmente, como foi digitada. <br />
&nbsp;&nbsp;&ldquo;desafeta&ccedil;&atilde;o de &aacute;rea p&uacute;blica&ldquo; <br /> &nbsp;&nbsp;&ldquo;desafeta&ccedil;&atilde;o de &aacute;rea p&uacute;blica&ldquo; <br />
&nbsp;&nbsp;... n&atilde;o apresenta &ldquo;desafeta&ccedil;&atilde;o de &aacute;reas p&uacute;blicas&ldquo; . <br /><br> &nbsp;&nbsp;... n&atilde;o apresenta &ldquo;desafeta&ccedil;&atilde;o de &aacute;reas p&uacute;blicas&ldquo; . <br /><br>
A partir da vers&atilde;o 2.0 do SAPL passou a ser A partir da vers&atilde;o 2.0 do Legisinc passou a ser
poss&iacute;vel tamb&eacute;m a <span poss&iacute;vel tamb&eacute;m a <span
style="font-weight: bold;">pesquisa por palavra contida no style="font-weight: bold;">pesquisa por palavra contida no
texto da ATA</span>. Basta informar a texto da ATA</span>. Basta informar a

2
sapl/templates/auth/user_form.html

@ -17,7 +17,7 @@
</button> </button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<p class="lead mb-4">Cada grupo de permissões concede acesso a funcionalidades específicas do SAPL. Selecione os grupos adequados conforme as responsabilidades do usuário.</p> <p class="lead mb-4">Cada grupo de permissões concede acesso a funcionalidades específicas do Legisinc. Selecione os grupos adequados conforme as responsabilidades do usuário.</p>
<div class="row"> <div class="row">
<div class="col-md-6 mb-4"> <div class="col-md-6 mb-4">

2
sapl/templates/base.html

@ -12,7 +12,7 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>{% block head_title %}{% switch "SAPLN_SWITCH" %}SAPL-Normas - {% else %}SAPL - {%endswitch%}{{nome_casa}}{% endblock %}</title> <title>{% block head_title %}{% switch "LegisincN_SWITCH" %}Legisinc-Normas - {% else %}Legisinc - {%endswitch%}{{nome_casa}}{% endblock %}</title>
<script type="application/ld+json"> <script type="application/ld+json">
{ {
"@context" : "https://schema.org", "@context" : "https://schema.org",

5
sapl/templates/base/login.html

@ -104,11 +104,6 @@
</div> </div>
{# Informação adicional #} {# Informação adicional #}
<div class="text-center mt-4">
<p class="text-muted small">
Sistema de Apoio ao Processo Legislativo
</p>
</div>
</div> </div>
</div> </div>

4
sapl/templates/base/recuperar_senha_email.html

@ -1,4 +1,4 @@
<p>Você está recebendo este e-mail pois solicitou recuperação de senha de sua conta no site <b>SAPL</b>.</p></br></p> <p>Você está recebendo este e-mail pois solicitou recuperação de senha de sua conta no site <b>Legisinc</b>.</p></br></p>
<p>Por favor clique no link a seguir e redefina sua senha:</p></br> <p>Por favor clique no link a seguir e redefina sua senha:</p></br>
@ -10,4 +10,4 @@ Clique aqui</a></p></br>
<p>Atenciosamente,</p> <p>Atenciosamente,</p>
<p>A equipe <b>SAPL</b></p> <p>A equipe <b>Legisinc</b></p>

8
sapl/templates/base/tipoautor_list.html

@ -6,7 +6,7 @@
<div class="row"> <div class="row">
<div class="col-lg-4"> <div class="col-lg-4">
<div class="list-group"> <div class="list-group">
<span class="list-group-item active">Tipos de Autores do SAPL</span> <span class="list-group-item active">Tipos de Autores do Legisinc</span>
{% for tipo in tipos_sapl %} {% for tipo in tipos_sapl %}
<a href="{% url tipo|tipoautor_contenttype_list %}" class="list-group-item">{{tipo}}</a> <a href="{% url tipo|tipoautor_contenttype_list %}" class="list-group-item">{{tipo}}</a>
{% endfor %} {% endfor %}
@ -18,11 +18,11 @@
{{block.super}} {{block.super}}
<div class="help-block-danger"> <div class="help-block-danger">
<strong>Atenção!!!</strong> - Não cadastre tipos de autores semelhantes <strong>Atenção!!!</strong> - Não cadastre tipos de autores semelhantes
aos "Tipos de Autores do SAPL" que estão na tabela ao lado. Esses tipos aos "Tipos de Autores do Legisinc" que estão na tabela ao lado. Esses tipos
são fixos no SAPL pois representam seus cadastros no local apropriado.<br> são fixos no Legisinc pois representam seus cadastros no local apropriado.<br>
</div> </div>
<div class="help-block-danger"> <div class="help-block-danger">
Novamente, NÃO cadastre "Tipos de Autor" semelhantes aos tipos do SAPL.<br> Novamente, NÃO cadastre "Tipos de Autor" semelhantes aos tipos do Legisinc.<br>
<strong>Veja como exemplo:</strong> No Sapl existe o tipo Parlamentar. <strong>Veja como exemplo:</strong> No Sapl existe o tipo Parlamentar.
Não use tipos semelhantes, como cadastrar um tipo com a descrição "Vereador", Não use tipos semelhantes, como cadastrar um tipo com a descrição "Vereador",
ou mesmo cadastrar outro como "Parlamentar".<br> ou mesmo cadastrar outro como "Parlamentar".<br>

2
sapl/templates/compilacao/text_edit.html

@ -117,7 +117,7 @@
<li>Após usar a opção DVt, alterações manuais poderão ser feitas no Editor Avançado e, não sendo usado novamente a opção Dvt, essas alterações manuais serão mantidas.</li> <li>Após usar a opção DVt, alterações manuais poderão ser feitas no Editor Avançado e, não sendo usado novamente a opção Dvt, essas alterações manuais serão mantidas.</li>
</ol> </ol>
</li> </li>
<li>A criação de Tipos de Dispositivos é dinâmica e deverão estar amarrados por perfis estuturais configuráveis. Por serem tarefas técnicas e complicadas, criar/editar tipos de dispositivos e perfis estuturais estão disponíveis apenas na área de edição técnica do SAPL (admin). <li>A criação de Tipos de Dispositivos é dinâmica e deverão estar amarrados por perfis estuturais configuráveis. Por serem tarefas técnicas e complicadas, criar/editar tipos de dispositivos e perfis estuturais estão disponíveis apenas na área de edição técnica do Legisinc (admin).
</li> </li>
</ol> </ol>
<ul> <ul>

2
sapl/templates/email/acompanhar.html

@ -4,8 +4,6 @@
<html><head></head><body bgcolor='#ffffff'> <html><head></head><body bgcolor='#ffffff'>
<h2 align='center'><b>{{casa_legislativa}}</b> <h2 align='center'><b>{{casa_legislativa}}</b>
<br/>
Sistema de Apoio ao Processo Legislativo
</h2> </h2>
<p>Registramos seu pedido para acompanhamento por e-mail da matéria legislativa identificada a seguir:</p> <p>Registramos seu pedido para acompanhamento por e-mail da matéria legislativa identificada a seguir:</p>

2
sapl/templates/email/acompanhar.txt

@ -1,7 +1,5 @@
{{casa_legislativa}} {{casa_legislativa}}
Sistema de Apoio ao Processo Legislativo
>Registramos seu pedido para acompanhamento por e-mail da matéria legislativa identificada a seguir: >Registramos seu pedido para acompanhamento por e-mail da matéria legislativa identificada a seguir:
{{base_url}}{{materia_url}} - {{materia}} - {{descricao_materia}} {{base_url}}{{materia_url}} - {{materia}} - {{descricao_materia}}

2
sapl/templates/email/acompanhar_documento.html

@ -4,8 +4,6 @@
<html><head></head><body bgcolor='#ffffff'> <html><head></head><body bgcolor='#ffffff'>
<h2 align='center'><b>{{casa_legislativa}}</b> <h2 align='center'><b>{{casa_legislativa}}</b>
<br/>
Sistema de Apoio ao Processo Legislativo
</h2> </h2>
<p>Registramos seu pedido para acompanhamento por e-mail do documento administrativo identificado a seguir:</p> <p>Registramos seu pedido para acompanhamento por e-mail do documento administrativo identificado a seguir:</p>

2
sapl/templates/email/acompanhar_documento.txt

@ -1,7 +1,5 @@
{{casa_legislativa}} {{casa_legislativa}}
Sistema de Apoio ao Processo Legislativo
>Registramos seu pedido para acompanhamento por e-mail do documento administrativo identificado a seguir: >Registramos seu pedido para acompanhamento por e-mail do documento administrativo identificado a seguir:
{{base_url}}{{documento_url}} - {{documento}} - {{descricao_documento}} {{base_url}}{{documento_url}} - {{documento}} - {{descricao_documento}}

2
sapl/templates/email/tramitacao.html

@ -5,8 +5,6 @@
<head></head> <head></head>
<body bgcolor='#ffffff'> <body bgcolor='#ffffff'>
<h2 align='center'><b>{{casa_legislativa}}</b> <h2 align='center'><b>{{casa_legislativa}}</b>
<br/>
Sistema de Apoio ao Processo Legislativo
</h2> </h2>
<p>A seguinte mat&eacute;ria, de seu interesse, sofreu <p>A seguinte mat&eacute;ria, de seu interesse, sofreu
Tramita&ccedil;&atilde;o registrada em <b>{{data_registro}}</b>. Tramita&ccedil;&atilde;o registrada em <b>{{data_registro}}</b>.

3
sapl/templates/email/tramitacao.txt

@ -1,8 +1,5 @@
{{casa_legislativa}} {{casa_legislativa}}
Sistema de Apoio ao Processo Legislativo
-----------------------------------------
A seguinte matéria, de seu interesse, sofreu Tramitação registrada em {{data_registro}} A seguinte matéria, de seu interesse, sofreu Tramitação registrada em {{data_registro}}
Matéria: {{materia}} - {{descricao_materia}} Matéria: {{materia}} - {{descricao_materia}}

2
sapl/templates/fluxo_proposicoes.html

@ -407,7 +407,7 @@
<div class="fluxo-proposicoes"> <div class="fluxo-proposicoes">
<!-- Hero Section --> <!-- Hero Section -->
<div class="hero-section"> <div class="hero-section">
<h1><i class="fas fa-paper-plane"></i> Fluxo de Proposições no SAPL</h1> <h1><i class="fas fa-paper-plane"></i> Fluxo de Proposições no Legisinc</h1>
<p>Entenda como parlamentares criam proposições e como elas se tornam matérias legislativas</p> <p>Entenda como parlamentares criam proposições e como elas se tornam matérias legislativas</p>
</div> </div>

16
sapl/templates/guia_projeto.html

@ -1,7 +1,7 @@
{% extends "base.html" %} {% extends "base.html" %}
{% load i18n %} {% load i18n %}
{% block head_title %}Guia do Projeto SAPL - {{nome_casa}}{% endblock %} {% block head_title %}Guia do Projeto Legisinc - {{nome_casa}}{% endblock %}
{% block base_content %} {% block base_content %}
<style> <style>
@ -212,11 +212,11 @@
</style> </style>
<div class="guia-projeto"> <div class="guia-projeto">
<h1><i class="fas fa-book"></i> Guia do Projeto SAPL</h1> <h1><i class="fas fa-book"></i> Guia do Projeto Legisinc</h1>
<div class="alert"> <div class="alert">
<strong><i class="fas fa-info-circle"></i> Sobre este Guia:</strong> <strong><i class="fas fa-info-circle"></i> Sobre este Guia:</strong>
Este documento contém informações completas sobre a arquitetura, módulos, fluxos de trabalho e permissões do Sistema de Apoio ao Processo Legislativo (SAPL). Este documento contém informações completas sobre a arquitetura, módulos, fluxos de trabalho e permissões do Legisinc.
</div> </div>
<!-- Índice --> <!-- Índice -->
@ -237,7 +237,7 @@
<!-- Visão Geral --> <!-- Visão Geral -->
<h2 id="visao-geral"><i class="fas fa-eye"></i> Visão Geral</h2> <h2 id="visao-geral"><i class="fas fa-eye"></i> Visão Geral</h2>
<p> <p>
O <strong>SAPL</strong> é um sistema web completo para gerenciamento de processos legislativos em casas legislativas municipais, estaduais e federais. O <strong>Legisinc</strong> é um sistema web completo para gerenciamento de processos legislativos em casas legislativas municipais, estaduais e federais.
Desenvolvido pelo Interlegis (Senado Federal), o sistema abrange todo o ciclo de vida legislativo, desde o cadastro de parlamentares até a votação e publicação de normas jurídicas. Desenvolvido pelo Interlegis (Senado Federal), o sistema abrange todo o ciclo de vida legislativo, desde o cadastro de parlamentares até a votação e publicação de normas jurídicas.
</p> </p>
<p><strong>Versão Atual:</strong> <span class="badge badge-primary">3.1.164-RC5</span></p> <p><strong>Versão Atual:</strong> <span class="badge badge-primary">3.1.164-RC5</span></p>
@ -279,7 +279,7 @@
<!-- Módulos --> <!-- Módulos -->
<h2 id="modulos"><i class="fas fa-cubes"></i> Módulos Principais</h2> <h2 id="modulos"><i class="fas fa-cubes"></i> Módulos Principais</h2>
<p>O SAPL está organizado em <strong>9 módulos principais</strong>:</p> <p>O Legisinc está organizado em <strong>9 módulos principais</strong>:</p>
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-6">
@ -486,10 +486,10 @@
<!-- Tipos de Usuários --> <!-- Tipos de Usuários -->
<h2 id="usuarios"><i class="fas fa-users"></i> Tipos de Usuários e Permissões</h2> <h2 id="usuarios"><i class="fas fa-users"></i> Tipos de Usuários e Permissões</h2>
<p>O SAPL possui um sistema robusto de controle de acesso com <strong>11 grupos de usuários</strong> diferentes:</p> <p>O Legisinc possui um sistema robusto de controle de acesso com <strong>11 grupos de usuários</strong> diferentes:</p>
<div class="user-type"> <div class="user-type">
<h4>1. Operador Geral (Superusuário SAPL)</h4> <h4>1. Operador Geral (Superusuário Legisinc)</h4>
<p><strong>Acesso:</strong> Todos os módulos e funcionalidades</p> <p><strong>Acesso:</strong> Todos os módulos e funcionalidades</p>
<p><strong>Telas Principais:</strong></p> <p><strong>Telas Principais:</strong></p>
<ul> <ul>
@ -667,7 +667,7 @@
<!-- API REST --> <!-- API REST -->
<h2 id="api"><i class="fas fa-code"></i> API REST</h2> <h2 id="api"><i class="fas fa-code"></i> API REST</h2>
<p>O SAPL disponibiliza uma API REST completa para integração com outros sistemas.</p> <p>O Legisinc disponibiliza uma API REST completa para integração com outros sistemas.</p>
<div class="card"> <div class="card">
<div class="card-header">Informações da API</div> <div class="card-header">Informações da API</div>

2
sapl/templates/index.html

@ -144,7 +144,7 @@
<i class="fas fa-book"></i> <i class="fas fa-book"></i>
</div> </div>
<h3 class="card-title">Guia do Projeto</h3> <h3 class="card-title">Guia do Projeto</h3>
<p class="card-description">Documentação completa do sistema SAPL</p> <p class="card-description">Documentação completa do sistema Legisinc</p>
<div class="card-actions"> <div class="card-actions">
<a href="{% url 'sapl.base:guia_projeto' %}" class="btn-action" title="Ver Guia do Projeto"> <a href="{% url 'sapl.base:guia_projeto' %}" class="btn-action" title="Ver Guia do Projeto">
<i class="fas fa-book-reader"></i> Consultar <i class="fas fa-book-reader"></i> Consultar

4
sapl/templates/materia/recibo_proposicao.html

@ -35,8 +35,6 @@
{% else %} {% else %}
<b>{% trans 'Sem Nome Cadastrado' %}</b> <b>{% trans 'Sem Nome Cadastrado' %}</b>
{% endif %} {% endif %}
<br />
{% trans 'Sistema de Apoio ao Processo Legislativo' %}
</td> </td>
</tr> </tr>
<tr> <td colspan="2" align="center"><b>RECIBO DE ENVIO DE PROPOSIÇÃO</b></td> </tr> <tr> <td colspan="2" align="center"><b>RECIBO DE ENVIO DE PROPOSIÇÃO</b></td> </tr>
@ -71,7 +69,7 @@
<table> <table>
<tr> <tr>
<td align="center"> <td align="center">
Declaro que o conteúdo do texto impresso em anexo é idêntico ao conteúdo enviado eletronicamente por meio do sistema SAPL para esta proposição. Declaro que o conteúdo do texto impresso em anexo é idêntico ao conteúdo enviado eletronicamente por meio do sistema Legisinc para esta proposição.
</td> </td>
</tr> </tr>
<tr> <td align="center"><br /><br /><br /><b>________________________________________________________________</b></td> </tr> <tr> <td align="center"><br /><br /><br /><b>________________________________________________________________</b></td> </tr>

2
sapl/templates/painel/index.html

@ -13,7 +13,7 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- TODO: does it need this head_title here? --> <!-- TODO: does it need this head_title here? -->
<title>{% block head_title %}{% trans 'SAPL - Sistema de Apoio ao Processo Legislativo' %}{% endblock %}</title> <title>{% block head_title %}{% trans 'Legisinc' %}{% endblock %}</title>
{% block webpack_loader_css %} {% block webpack_loader_css %}
{% render_chunk_vendors 'css' %} {% render_chunk_vendors 'css' %}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save