Browse Source

feat(branding): altera cores e substitui logo de LegisInc para SGVP

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

119
.claude/commands/mapear-estrutura-projeto.md

@ -0,0 +1,119 @@
# Skill: Mapear Estrutura do Projeto
Esta skill analisa e documenta a estrutura completa do projeto atual, gerando um arquivo de referência arquitetural.
## Instruções de Execução
### 1. Análise Inicial
Execute os seguintes comandos para mapear o projeto:
```bash
# Nome do projeto (baseado no diretório)
basename $(pwd)
# Detectar tecnologias
ls -la | head -20
```
### 2. Detectar Tecnologias
Verifique a existência dos seguintes arquivos para identificar as tecnologias:
- `package.json` → Node.js/JavaScript
- `composer.json` → PHP/Laravel
- `requirements.txt` ou `Pipfile` ou `pyproject.toml` → Python
- `Gemfile` → Ruby
- `go.mod` → Go
- `Cargo.toml` → Rust
- `Dockerfile` ou `docker-compose.yml` → Docker
- `manage.py` → Django
- `settings.py` no diretório principal → Django
- `artisan` → Laravel
### 3. Mapear Estrutura de Diretórios
Use o comando tree ou find para mapear toda a estrutura:
```bash
# Estrutura completa (excluindo node_modules, __pycache__, .git, venv, etc.)
find . -type d \( -name "node_modules" -o -name "__pycache__" -o -name ".git" -o -name "venv" -o -name ".venv" -o -name "vendor" -o -name ".tox" -o -name "*.egg-info" -o -name "build" -o -name "dist" -o -name ".pytest_cache" -o -name ".mypy_cache" \) -prune -o -type f -print | head -500
```
### 4. Identificar Componentes Principais
Procure pelos seguintes padrões:
**Backend:**
- Controllers/Views: `**/controllers/**`, `**/views/**`, `**/api/**`
- Models: `**/models/**`, `**/entities/**`
- Services: `**/services/**`, `**/usecases/**`
- Repositories: `**/repositories/**`, `**/dao/**`
- Migrations: `**/migrations/**`, `**/database/migrations/**`
- Routes: `**/routes/**`, `**/urls.py`, `routes/web.php`
- Middleware: `**/middleware/**`
- Jobs/Tasks: `**/jobs/**`, `**/tasks/**`, `**/celery/**`
**Frontend:**
- Components: `**/components/**`, `**/src/components/**`
- Pages: `**/pages/**`, `**/views/**`
- Stores: `**/stores/**`, `**/store/**`, `**/redux/**`
- Assets: `**/assets/**`, `**/static/**`, `**/public/**`
- Styles: `**/styles/**`, `**/css/**`, `**/scss/**`
**Infraestrutura:**
- Config: `**/config/**`, `**/settings/**`
- Docker: `Dockerfile`, `docker-compose*.yml`
- CI/CD: `.github/workflows/**`, `.gitlab-ci.yml`, `Jenkinsfile`
- Environment: `.env*`, `*.env`
### 5. Gerar Arquivo de Estrutura
Crie o arquivo `.claude/context/estrutura-projeto.md` com o seguinte formato:
```markdown
# Estrutura do Projeto: [NOME_DO_PROJETO]
> Última atualização: [DATA_ATUAL]
## Tecnologias Detectadas
- [Lista de tecnologias identificadas]
## Árvore de Diretórios
[Estrutura em formato tree]
## Organização das Pastas Principais
### Backend
[Descrição da organização do backend]
### Frontend
[Descrição da organização do frontend]
### Infraestrutura
[Descrição dos arquivos de infra]
## Fluxo do Backend
[Explicar: rotas → controllers → services → repositories → models]
## Fluxo do Frontend
[Explicar: páginas → componentes → stores → libs]
## Microserviços
[Se existirem, descrever a organização]
## Pontos Críticos
[Listar pontos de atenção no projeto]
## Sugestões de Organização
[Se aplicável, sugerir melhorias]
```
### 6. Finalização
Após gerar o arquivo, exiba a mensagem:
**"Estrutura atualizada. Todas as skills já podem usar este arquivo como referência arquitetural."**
---
## Notas Importantes
- Esta skill SEMPRE sobrescreve o arquivo anterior
- O arquivo gerado serve como "cérebro estrutural" para outras skills
- Outras skills devem ler `.claude/context/estrutura-projeto.md` antes de criar módulos ou fazer alterações
- Mantenha o arquivo atualizado executando esta skill periodicamente

4
.gitignore

@ -116,3 +116,7 @@ restauracoes/*
docker/
docker-compose.yml
docker-compose.yaml
# Claude Code
.claude/context/*.md
NOTAS.txt

4
CHANGES.md

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

4
LOCALHOST_SETUP.md

@ -1,6 +1,6 @@
# Subir o SAPL apontando para o banco remoto (localhost)
Passo a passo para subir o ambiente local usando o Postgres já disponível em `legisinc.com.br:5432`.
Passo a passo para subir o ambiente local usando o Postgres já disponível em `sgvp.com.br:5432`.
## 1) Preparar o ambiente Python
@ -16,7 +16,7 @@ pip install -r requirements/requirements.txt
Edite `sapl/.env` com os valores do banco remoto:
```env
DATABASE_URL=postgresql://kemuel:kasepulvida@legisinc.com.br:5432/sapl
DATABASE_URL=postgresql://kemuel:kasepulvida@sgvp.com.br:5432/sapl
SECRET_KEY=<sua-chave-secreta>
DEBUG=True
EMAIL_USE_TLS=True

22
README.rst

@ -2,15 +2,15 @@
******
Legisinc
SGVP
******
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! [02/08/2022]: Novas alterações foram realizadas nos containers do SGVP 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
adaptar o uso deste pelo Legisinc. Para isso foram feitas mudanças no docker-compose.yml
adaptar o uso deste pelo SGVP. 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.
Recomendamos fortemente que para a versão 3.1.162 e superior do Legisinc seja feito o backup do
Recomendamos fortemente que para a versão 3.1.162 e superior do SGVP seja feito o backup do
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. É
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.
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 Legisinc.
Esta página reúne informações úteis sobre o desenvolvimento atual do SGVP.
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>`_.
**IMPORTANTE:** A partir da versão 3.1.162 do Legisinc, as funcionalidades de recuperar senha,
**IMPORTANTE:** A partir da versão 3.1.162 do SGVP, 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
das chaves do reCaptcha e configuração no Legisinc em Sistema -> Parâmetros -> Configurações da Aplicação.
das chaves do reCaptcha e configuração no SGVP em Sistema -> Parâmetros -> Configurações da Aplicação.
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
e no caderno de exercícios do Legisinc 3.1 disponível na `Wiki do projeto <https://colab.interlegis.leg.br/wiki/ProjetoSapl3.1>`_
e no caderno de exercícios do SGVP 3.1 disponível na `Wiki do projeto <https://colab.interlegis.leg.br/wiki/ProjetoSapl3.1>`_
Instalação do Ambiente de Desenvolvimento
=========================================
@ -46,12 +46,12 @@ Instalação do Solr
Instruções para Deploy
======================
`Deploy Legisinc com Nginx + Gunicorn <https://github.com/interlegis/sapl/blob/3.1.x/docs/deploy.rst>`_
`Deploy SGVP 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
============================================
`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>`_
`Importação da Base do SGVP 2.5 para SGVP 3.1 <https://github.com/interlegis/sapl/wiki/Migra%C3%A7%C3%A3o-sapl-2.5-para-3.1>`_
Instruções para Tradução
@ -72,7 +72,7 @@ Orientações gerais sobre o GitHub
Suporte ao utilizadores
===================================
`Sala do Discord "Somos Interlegis" sobre Legisinc <https://discord.gg/fzXSbhZbcy>`_
`Sala do Discord "Somos Interlegis" sobre SGVP <https://discord.gg/fzXSbhZbcy>`_
Perguntas Frequentes

18
docs/ACESSO_SISTEMA.md

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

18
docs/CONFIGURACAO_BD_REMOTO.md

@ -1,6 +1,6 @@
# Configuração do Legisinc com Banco de Dados Remoto
# Configuração do SGVP com Banco de Dados Remoto
Este documento explica como configurar o Legisinc para usar um banco de dados PostgreSQL remoto.
Este documento explica como configurar o SGVP para usar um banco de dados PostgreSQL remoto.
## Problemas Corrigidos
@ -52,7 +52,7 @@ Adicione a variável `DATABASE_URL` nas variáveis de ambiente do serviço `sapl
ADMIN_PASSWORD: interlegis
ADMIN_EMAIL: email@dominio.net
DEBUG: 'False'
DATABASE_URL: postgresql://bruno:Sapl%402025@legisinc.com.br:5432/sapl
DATABASE_URL: postgresql://bruno:Sapl%402025@sgvp.com.br:5432/sapl
# ... outras variáveis
```
@ -84,11 +84,11 @@ No mesmo arquivo, remova `sapldb` das dependências:
### Passo 3: Testar a conexão com o banco remoto
Antes de iniciar o Legisinc, teste a conexão:
Antes de iniciar o SGVP, teste a conexão:
```bash
docker run --rm postgres:10.5-alpine psql \
"postgresql://bruno:Sapl%402025@legisinc.com.br:5432/sapl" \
"postgresql://bruno:Sapl%402025@sgvp.com.br:5432/sapl" \
-c "\dt"
```
@ -145,11 +145,11 @@ Se estiver usando um banco remoto existente, use os usuários já cadastrados ne
```
┌─────────────────┐
Legisinc │ → Porta 8000:80
SGVP │ → Porta 8000:80
│ (Aplicação) │
└────────┬────────┘
├──→ legisinc.com.br:5432 (PostgreSQL Remoto)
├──→ sgvp.com.br:5432 (PostgreSQL Remoto)
├──→ SOLR (Porta 8983)
@ -196,7 +196,7 @@ docker logs sapl 2>&1 | grep -i error
# Ver status dos containers
docker-compose ps
# Reiniciar o Legisinc
# Reiniciar o SGVP
docker-compose restart sapl
# Ver logs em tempo real
@ -221,7 +221,7 @@ docker exec -it sapl bash
sapl/
├── docker/
│ ├── docker-compose.yaml # Configuração principal
│ ├── Dockerfile # Imagem do Legisinc
│ ├── Dockerfile # Imagem do SGVP
│ └── startup_scripts/
│ ├── gunicorn.conf.py # Configuração do gunicorn
│ ├── start.sh # Script de inicialização

2
docs/CONTRIBUTING.md

@ -1,4 +1,4 @@
# Contribuindo com Legisinc
# Contribuindo com SGVP
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).

4
docs/FLUXO_PROPOSICOES.md

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

16
docs/GUIA_DO_PROJETO.md

@ -1,8 +1,8 @@
# Legisinc
# SGVP
## Visão Geral
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.
O **SGVP** é 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
@ -41,7 +41,7 @@ O **Legisinc** é um sistema web completo para gerenciamento de processos legisl
## Módulos Principais
O Legisinc está organizado em 9 módulos principais:
O SGVP está organizado em 9 módulos principais:
### 1. **Base** (`sapl.base`)
- Configurações gerais do sistema
@ -285,7 +285,7 @@ Antes de começar a usar o sistema para criar dados, é necessário configurar:
sapl/
├── docker/ # Configurações Docker
│ ├── docker-compose.yaml # Orquestração de containers
│ └── Dockerfile # Imagem do Legisinc
│ └── Dockerfile # Imagem do SGVP
├── frontend/ # Código frontend (Vue.js)
│ ├── src/
│ │ ├── __global/ # Estilos e componentes globais
@ -339,7 +339,7 @@ yarn build
## API REST
O Legisinc disponibiliza uma API REST completa para integração com outros sistemas.
O SGVP disponibiliza uma API REST completa para integração com outros sistemas.
- **Documentação**: http://localhost:8000/api/docs/
- **Schema OpenAPI**: http://localhost:8000/api/schema/
@ -384,11 +384,11 @@ O Legisinc disponibiliza uma API REST completa para integração com outros sist
## Tipos de Usuários e Permissões
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.
O SGVP 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
#### 1. **Operador Geral** (Superusuário Legisinc)
#### 1. **Operador Geral** (Superusuário SGVP)
**Acesso**: Todos os módulos e funcionalidades
- Configurações do sistema
- 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
O Legisinc usa 5 radicais de permissão para cada entidade:
O SGVP usa 5 radicais de permissão para cada entidade:
- **`.list_`** - Listar registros (visualizar lista)
- **`.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
```bash
# Ativar o virtualenv do Legisinc (ajuste o caminho conforme necessário)
# Ativar o virtualenv do SGVP (ajuste o caminho conforme necessário)
source /opt/venv/bin/activate # ou o caminho do seu venv
# Instalar bibliotecas necessárias
@ -111,7 +111,7 @@ sudo systemctl restart nginx
### Arquivos Modificados:
1. `/sapl/templates/admin/base_site.html` - Navbar do Legisinc no admin
1. `/sapl/templates/admin/base_site.html` - Navbar do SGVP no admin
## 🔐 Configurações de Segurança
@ -268,5 +268,5 @@ Em caso de dúvidas ou problemas:
---
**Data de criação:** 03/10/2025
**Versão do Legisinc:** 3.1.x
**Versão do SGVP:** 3.1.x
**Última atualização:** Após merge com branch principal

10
docs/ONLYOFFICE_INTEGRATION.md

@ -1,4 +1,4 @@
# Integração OnlyOffice Document Server no Legisinc
# Integração OnlyOffice Document Server no SGVP
## Visão Geral
@ -115,7 +115,7 @@ Após criar/editar o texto com OnlyOffice:
│ 1. Acessa editor
┌──────────────────┐
Legisinc (Django) │
SGVP (Django) │
└──────┬───────────┘
│ 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
┌──────────────────┐
Legisinc (Django) │
SGVP (Django) │
└──────┬───────────┘
│ 4. Retorna configuração JSON
@ -143,7 +143,7 @@ Após criar/editar o texto com OnlyOffice:
│ │
▼ │
┌──────────────────┐ │
Legisinc (Django) │─────────────┘
SGVP (Django) │─────────────┘
└──────┬───────────┘
│ 7. Retorna documento (ou documento em branco)
@ -154,7 +154,7 @@ Após criar/editar o texto com OnlyOffice:
│ 9. AutoSave
┌──────────────────┐
Legisinc (Django) │
SGVP (Django) │
│ /callback │
└──────┬───────────┘
│ 10. Salva documento no banco

10
docs/ONLYOFFICE_RESUMO_FINAL.md

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

6
docs/SETUP_ONLYOFFICE.md

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

2
docs/TESTE_RAPIDO_ONLYOFFICE.md

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

2
docs/credits.txt

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

4
docs/deploy.rst

@ -2,13 +2,13 @@
Instruções para fazer o Deploy
==============================
Para efeitos deste doc, foram consideradas as tecnologias NGINX + GUNICORN para servir a aplicação Django Legisinc.
Para efeitos deste doc, foram consideradas as tecnologias NGINX + GUNICORN para servir a aplicação Django SGVP.
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 Legisinc não seja executado em modo debug.
É altamente recomendável que para produção o SGVP não seja executado em modo debug.
Para isso edite o arquivo ``.env`` criado anteriormente em::
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()
- 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.
- 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 SGVP.
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
O comando acima irá clonar a última versão estável do Legisinc (3.1.x)
O comando acima irá clonar a última versão estável do SGVP (3.1.x)
Para clonar todo o repositório utilize o comando abaixo:
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.
Criar o ambiente virtual de desenvolvimento para o Legisinc
Criar o ambiente virtual de desenvolvimento para o SGVP
-------------------------------------------------------
::
@ -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;"
* 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 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)
* (caso você já possua uma instalação do postrgresql anterior ao processo de instalação do ambiente de desenvolvimento do SGVP 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**::
@ -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
* Acesse o Legisinc em::
* Acesse o SGVP em::
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
* `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::
* `Os perfis semânticos do SGVP <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
* 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.
* Os perfis fixos não aceitam customização via admin, porém outros grupos podem ser criados. O SGVP 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::
@ -217,7 +217,7 @@ Instruções para criação do super usuário e de usuários de testes
operador_painel
Frontend do Legisinc
Frontend do SGVP
=============
* 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
================================
**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).**
**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 SGVP na rede interna (atrás de NATs/firewalls/proxies/etc).**
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).
Solr é uma plataforma open source de indexação e busca textual utilizada pelo SGVP 3.1 para indexar documentos (normas jurídicas, matérias legislativas e documentos acessórios).
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 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);
Observação: Se a execução do SGVP 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 SGVP 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**
@ -25,7 +25,7 @@ Observação: Se a execução do Legisinc for mediante containers Docker então
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 Legisinc;
5) Pare o servidor do SGVP;
6) Edite o arquivo .env adicionando as seguintes linhas:
@ -40,11 +40,11 @@ Observação: Se a execução do Legisinc for mediante containers Docker então
(o valor do campo SOLR_URL deve corresponder à URL acessada no item 3)
7) Entre no diretório raiz do Legisinc e digite o comando: **python3 solr_api.py -c sapl -u http://localhost:8983`**
7) Entre no diretório raiz do SGVP 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)
8) Enquanto o Solr realiza a indexação da base de dados do Legisinc, inicie em uma outra tela o Legisinc;
8) Enquanto o Solr realiza a indexação da base de dados do SGVP, inicie em uma outra tela o SGVP;
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.
@ -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?
Errado. Cada novo documento inserido, atualizado, ou removido do Legisinc dispara uma nova indexação somente daquele documento no Solr automaticamente.
Errado. Cada novo documento inserido, atualizado, ou removido do SGVP 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?
@ -81,7 +81,7 @@ de 'Pesquisa Textual' na tela de busca tradicional.
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 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.
Pode acontecer do Postgres e o Solr se dessincronizarem (ex: o Solr ficou fora do ar por um dia e foram inseridos registros no SGVP). 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 SGVP). 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

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.
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>`_.
Se você deseja contribuir, por favor crie uma conta no site e peça para se juntar a nós em `Transifex SGVP Page <https://www.transifex.com/projects/p/sapl>`_.
Assim que for aceito, você já pode começar a traduzir.
Para integrar as últimas traduções ao projeto atual, siga estes passos:

16
frontend/src/__global/scss/_components.scss

@ -329,6 +329,20 @@ a {
}
// Navbar customization
.navbar-dark .navbar-nav .nav-link {
color: #FFFFFF !important;
&:hover,
&:focus {
color: #3DB8CF !important;
}
}
.navbar-dark small,
.navbar-dark .navbar-brand small {
color: #FFFFFF !important;
}
.navbar.navbar-dark.bg-dark {
background-color: $primary-color !important;
box-shadow: $box-shadow;
@ -336,6 +350,7 @@ a {
.navbar-brand {
font-weight: 600;
color: #FFFFFF;
transition: $transition-fast;
&:hover {
@ -344,6 +359,7 @@ a {
}
.nav-link {
color: #FFFFFF !important;
transition: $transition-fast;
&:hover {

4
frontend/src/__global/scss/_variables.scss

@ -1,9 +1,9 @@
// ============================================
// PALETA DE CORES INSTITUCIONAL Legisinc
// PALETA DE CORES INSTITUCIONAL SGVP
// ============================================
// Cores Primárias
$primary-color: #0E3A5D; // Azul institucional - Autoridade, confiança, estabilidade
$primary-color: #1937CA; // Azul institucional - Autoridade, confiança, estabilidade
$secondary-color: #3DB8CF; // Azul claro - Modernidade, tecnologia, fluidez
// Cores Neutras

12
frontend/src/__global/scss/libs/bootstrap/_nav_navbar.scss

@ -8,12 +8,18 @@
flex-basis: 100%;
a {
white-space: nowrap;
color: #93a4aa;
color: #FFFFFF;
transition: color 0.2s ease-in-out;
}
.nav-link {
padding-top: 0;
padding-bottom: 0;
line-height: 4.5rem;
&:hover,
&:focus {
color: #3DB8CF;
}
}
.dropdown-menu {
background-color: #20282a;
@ -35,7 +41,7 @@
min-width: 15rem;
}
&:hover {
background-color: #364347;
background-color: #3DB8CF;
a {
color: white;
}
@ -51,7 +57,7 @@
min-width: 20%;;
}
a:not([href]):not([tabindex]) {
color: #777;
color: #FFFFFF;
}
&.justify-content-end {

18
frontend/webpack-stats.json

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

4
release.sh

@ -98,7 +98,7 @@ function commit_and_push {
git add CHANGES.md
rm latest_changes.md
if prompt_yes_no "${green_color}Do you want to commit Legisinc $FINAL_VERSION release locally?${reset_color}"; then
if prompt_yes_no "${green_color}Do you want to commit SGVP $FINAL_VERSION release locally?${reset_color}"; then
git commit -m "Release: $FINAL_VERSION"
git tag $FINAL_VERSION
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 "${green_color}Release: $FINAL_VERSION${reset_color}"
if prompt_yes_no "${green_color}Do you want to publish Legisinc $FINAL_VERSION release on Github?${reset_color}"; then
if prompt_yes_no "${green_color}Do you want to publish SGVP $FINAL_VERSION release on Github?${reset_color}"; then
echo -e "${green_color}Publishing $FINAL_VERSION on Github...${reset_color}"
current_date=$(date +%Y-%m-%d)
git push origin 3.1.x

2
sapl/api/serializers.py

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

8
sapl/api/views_health.py

@ -33,7 +33,7 @@ class HealthzView(APIView):
payload = {
"status": "OK" if ok else "UNHEALTHY",
"checks": {"app": {"ok": ok, "latency_ms": round(ms, 1), "error": msg}},
"version": settings.Legisinc_VERSION,
"version": settings.SGVP_VERSION,
"time": timezone.now().isoformat(),
}
if request.query_params.get("fmt") == "txt":
@ -68,7 +68,7 @@ class ReadyzView(APIView):
payload = {
"status": "ok" if ok else "unhealthy",
"checks": payload_checks,
"version": settings.Legisinc_VERSION,
"version": settings.SGVP_VERSION,
"time": timezone.now().isoformat(),
}
if request.query_params.get("fmt") == "txt":
@ -90,8 +90,8 @@ class AppzVersionView(APIView):
def get(self, request):
try:
payload = {
'name': 'Legisinc',
'version': settings.Legisinc_VERSION,
'name': 'SGVP',
'version': settings.SGVP_VERSION,
}
if request.query_params.get("fmt") == "txt":
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__)
admin.site.site_title = 'Administração - Legisinc'
admin.site.site_header = 'Administração - Legisinc'
admin.site.site_title = 'Administração - SGVP'
admin.site.site_header = 'Administração - SGVP'
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"
else:
msg = " - Ative o Acompanhamento de Documento"
subject = "[Legisinc] {} {}".format(str(doc_mat), msg)
subject = "[SGVP] {} {}".format(str(doc_mat), msg)
messages = []
recipients = []
@ -233,7 +233,7 @@ def do_envia_email_tramitacao(base_url, tipo, doc_mat, status, unidade_destino):
msg = " - Acompanhamento de Matéria Legislativa"
else:
msg = " - Acompanhamento de Documento"
subject = "[Legisinc] {} {}".format(str(doc_mat), msg)
subject = "[SGVP] {} {}".format(str(doc_mat), msg)
connection = get_connection()
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, \
Parlamentar, Votante
from sapl.protocoloadm.models import DocumentoAdministrativo
from sapl.rules import Legisinc_GROUP_AUTOR, Legisinc_GROUP_VOTANTE
from sapl.rules import SGVP_GROUP_AUTOR, SGVP_GROUP_VOTANTE
from sapl.sessao.models import SessaoPlenaria
from sapl.settings import MAX_IMAGE_UPLOAD_SIZE
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(
content_type__app_label__in=list(
map(lambda x: x.split('.')[-1], settings.Legisinc_APPS))
map(lambda x: x.split('.')[-1], settings.SGVP_APPS))
).exclude(
user=self.instance
).order_by('content_type__app_label',
@ -251,8 +251,8 @@ class UserAdminForm(ModelForm):
if permissions:
inst.user_permissions.add(*permissions)
g_autor = Group.objects.get(name=Legisinc_GROUP_AUTOR)
g_votante = Group.objects.get(name=Legisinc_GROUP_VOTANTE)
g_autor = Group.objects.get(name=SGVP_GROUP_AUTOR)
g_votante = Group.objects.get(name=SGVP_GROUP_VOTANTE)
if not self.cleaned_data['autor']:
inst.groups.remove(g_autor)
@ -564,7 +564,7 @@ class AutorForm(ModelForm):
operadores = forms.ModelMultipleChoiceField(
queryset=get_user_model().objects.all(),
widget=forms.CheckboxSelectMultiple(),
label=_('Usuários do Legisinc ligados ao autor acima selecionado'),
label=_('Usuários do SGVP ligados ao autor acima selecionado'),
required=False,
help_text=_(
'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,
null=True,
default=None,
verbose_name=_('Modelagem no Legisinc'),
verbose_name=_('Modelagem no SGVP'),
on_delete=models.PROTECT)
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):
print("\n\033[93m\033[1m{}\033[0m".format(
_('Atualizando registros TipoAutor do Legisinc:')))
_('Atualizando registros TipoAutor do SGVP:')))
for model in models_with_gr_for_autor:
content_type = ContentType.objects.get_for_model(model)
tipo_autor = TipoAutor.objects.filter(

6
sapl/base/views.py

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

4
sapl/context_processors.py

@ -34,9 +34,9 @@ def google_recaptcha_configured(request):
@cached_call("site-title", timeout=60 * 2)
def enable_sapn(request):
verbose_name = _('Legisinc') \
verbose_name = _('SGVP') \
if not sapn_is_enabled() \
else _('Sistema de Apoio à Publicação de Leis e Normas')
else _('Sistema de Gestão e Votação Parlamentar')
from sapl.base.models import CasaLegislativa
casa_legislativa = CasaLegislativa.objects.first()

10
sapl/lexml/OAIServer.py

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

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

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

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

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

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

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

2
sapl/materia/onlyoffice_views.py

@ -47,7 +47,7 @@ def onlyoffice_config(request, pk):
base_url = get_base_url(request)
# URLs para o OnlyOffice acessar (dentro da rede Docker)
# OnlyOffice precisa acessar o container Legisinc pelo nome do serviço
# OnlyOffice precisa acessar o container SGVP pelo nome do serviço
download_url = request.build_absolute_uri(
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):
qs = super().get_queryset()
from sapl.rules import Legisinc_GROUP_AUTOR
from sapl.rules import SGVP_GROUP_AUTOR
from django.contrib.auth.models import Group
user = self.request.user
grupo_autor = Group.objects.get(name=Legisinc_GROUP_AUTOR)
grupo_autor = Group.objects.get(name=SGVP_GROUP_AUTOR)
if not user.is_superuser and grupo_autor.user_set.filter(
id=user.id).exists():
@ -2985,7 +2985,7 @@ def get_zip_docacessorios(request, pk):
except Exception as e:
logger.error("user={}. Um erro inesperado ocorreu na criação do pdf de documentos acessorios: {}"
.format(username, str(e)))
msg = _('Um erro inesperado ocorreu. Entre em contato com o suporte do Legisinc.')
msg = _('Um erro inesperado ocorreu. Entre em contato com o suporte do SGVP.')
messages.add_message(request, messages.ERROR, msg)
return redirect(reverse('sapl.materia:documentoacessorio_list',
kwargs={'pk': pk}))
@ -3056,7 +3056,7 @@ def get_pdf_docacessorios(request, pk):
except Exception as e:
logger.error("user= {}.Um erro inesperado ocorreu na criação do pdf de documentos acessorios: {}"
.format(username, str(e)))
msg = _('Um erro inesperado ocorreu. Entre em contato com o suporte do Legisinc.')
msg = _('Um erro inesperado ocorreu. Entre em contato com o suporte do SGVP.')
messages.add_message(request, messages.ERROR, msg)
return redirect(reverse('sapl.materia:documentoacessorio_list',
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.crispy_layout_mixin import SaplFormHelper
from sapl.crispy_layout_mixin import form_actions, to_row
from sapl.rules import Legisinc_GROUP_VOTANTE
from sapl.rules import SGVP_GROUP_VOTANTE
from sapl.utils import FileFieldCheckMixin
from .models import (Coligacao, ComposicaoColigacao, Filiacao, Frente, Legislatura,
@ -611,7 +611,7 @@ class VotanteForm(ModelForm):
# Cria user
u = User.objects.get(username=self.cleaned_data['username'])
# Adiciona user ao grupo
g = Group.objects.filter(name=Legisinc_GROUP_VOTANTE)[0]
g = Group.objects.filter(name=SGVP_GROUP_VOTANTE)[0]
u.groups.add(g)
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.norma.models import AutoriaNorma, NormaJuridica
from sapl.parlamentares.apps import AppConfig
from sapl.rules import Legisinc_GROUP_VOTANTE
from sapl.rules import SGVP_GROUP_VOTANTE
from sapl.utils import (parlamentares_ativos, show_results_filter_set, ratelimit_ip)
from .forms import (ColigacaoFilterSet, FiliacaoForm, FrenteForm, LegislaturaForm, MandatoForm,
@ -109,7 +109,7 @@ class VotanteView(MasterDetailCrud):
def delete(self, *args, **kwargs):
obj = self.get_object()
g = Group.objects.filter(name=Legisinc_GROUP_VOTANTE)[0]
g = Group.objects.filter(name=SGVP_GROUP_VOTANTE)[0]
obj.user.groups.remove(g)
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
impossível de ser localizado não está controlando o acesso.
Exemplo: o Legisinc está configurado para ser docs adm restritivo porém
Exemplo: o SGVP está configurado para ser docs adm restritivo porém
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
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:
logger.error("user= {}.Um erro inesperado ocorreu na criação do pdf de documentos acessorios: {}"
.format(username, str(e)))
msg = _('Um erro inesperado ocorreu. Entre em contato com o suporte do Legisinc.')
msg = _('Um erro inesperado ocorreu. Entre em contato com o suporte do SGVP.')
messages.add_message(request, messages.ERROR, msg)
return redirect(reverse('sapl.materia:documentoacessorio_list',
kwargs={'pk': pk}))

2
sapl/redireciona_urls/tests.py

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

4
sapl/redireciona_urls/urls.py

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

6
sapl/redireciona_urls/views.py

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

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
# e portanto não é utilizada
No Legisinc foram acrescidas em todos os models as duas regras abaixo, adicionadas
No SGVP foram acrescidas em todos os models as duas regras abaixo, adicionadas
com o Signal post_migrate `create_proxy_permissions`
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
no model associado.
NESTE ARQUIVO ESTÃO DEFINIDOS OS RADICAIS E OS GRUPOS DEFAULT DO Legisinc
NESTE ARQUIVO ESTÃO DEFINIDOS OS RADICAIS E OS GRUPOS DEFAULT DO SGVP
"""
@ -55,41 +55,41 @@ __listdetailchange__ = [RP_LIST, RP_DETAIL, RP_CHANGE]
__perms_publicas__ = {RP_LIST, RP_DETAIL}
Legisinc_GROUP_ADMINISTRATIVO = _("Operador Administrativo")
Legisinc_GROUP_AUDIENCIA = _("Operador de Audiência")
Legisinc_GROUP_PROTOCOLO = _("Operador de Protocolo Administrativo")
Legisinc_GROUP_COMISSOES = _("Operador de Comissões")
Legisinc_GROUP_MATERIA = _("Operador de Matéria")
Legisinc_GROUP_NORMA = _("Operador de Norma Jurídica")
Legisinc_GROUP_SESSAO = _("Operador de Sessão Plenária")
Legisinc_GROUP_PAINEL = _("Operador de Painel Eletrônico")
Legisinc_GROUP_GERAL = _("Operador Geral")
Legisinc_GROUP_AUTOR = _("Autor")
Legisinc_GROUP_VOTANTE = _("Votante")
SGVP_GROUP_ADMINISTRATIVO = _("Operador Administrativo")
SGVP_GROUP_AUDIENCIA = _("Operador de Audiência")
SGVP_GROUP_PROTOCOLO = _("Operador de Protocolo Administrativo")
SGVP_GROUP_COMISSOES = _("Operador de Comissões")
SGVP_GROUP_MATERIA = _("Operador de Matéria")
SGVP_GROUP_NORMA = _("Operador de Norma Jurídica")
SGVP_GROUP_SESSAO = _("Operador de Sessão Plenária")
SGVP_GROUP_PAINEL = _("Operador de Painel Eletrônico")
SGVP_GROUP_GERAL = _("Operador Geral")
SGVP_GROUP_AUTOR = _("Autor")
SGVP_GROUP_VOTANTE = _("Votante")
# TODO - funcionalidade ainda não existe mas está aqui para efeito de anotação
Legisinc_GROUP_LOGIN_SOCIAL = _("Usuários com Login Social")
SGVP_GROUP_LOGIN_SOCIAL = _("Usuários com Login Social")
# 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
# como por exemplo AcompanhamentoMateria
Legisinc_GROUP_ANONYMOUS = ''
Legisinc_GROUPS = [
Legisinc_GROUP_ADMINISTRATIVO,
Legisinc_GROUP_PROTOCOLO,
Legisinc_GROUP_COMISSOES,
Legisinc_GROUP_MATERIA,
Legisinc_GROUP_NORMA,
Legisinc_GROUP_SESSAO,
Legisinc_GROUP_PAINEL,
Legisinc_GROUP_GERAL,
Legisinc_GROUP_AUTOR,
Legisinc_GROUP_VOTANTE,
Legisinc_GROUP_LOGIN_SOCIAL,
Legisinc_GROUP_ANONYMOUS,
SGVP_GROUP_ANONYMOUS = ''
SGVP_GROUPS = [
SGVP_GROUP_ADMINISTRATIVO,
SGVP_GROUP_PROTOCOLO,
SGVP_GROUP_COMISSOES,
SGVP_GROUP_MATERIA,
SGVP_GROUP_NORMA,
SGVP_GROUP_SESSAO,
SGVP_GROUP_PAINEL,
SGVP_GROUP_GERAL,
SGVP_GROUP_AUTOR,
SGVP_GROUP_VOTANTE,
SGVP_GROUP_LOGIN_SOCIAL,
SGVP_GROUP_ANONYMOUS,
]
Legisinc_GROUPS_DELETE = [
SGVP_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.utils.translation import ugettext_lazy as _
from sapl.rules import (Legisinc_GROUP_ADMINISTRATIVO, Legisinc_GROUP_COMISSOES,
Legisinc_GROUP_GERAL, Legisinc_GROUP_MATERIA, Legisinc_GROUP_NORMA,
Legisinc_GROUP_PAINEL, Legisinc_GROUP_PROTOCOLO,
Legisinc_GROUP_SESSAO)
from sapl.rules import (SGVP_GROUP_ADMINISTRATIVO, SGVP_GROUP_COMISSOES,
SGVP_GROUP_GERAL, SGVP_GROUP_MATERIA, SGVP_GROUP_NORMA,
SGVP_GROUP_PAINEL, SGVP_GROUP_PROTOCOLO,
SGVP_GROUP_SESSAO)
class AppConfig(django.apps.AppConfig):
@ -198,21 +198,21 @@ def get_rules():
def cria_usuarios_padrao(self):
for group, user in (
(Legisinc_GROUP_ADMINISTRATIVO, 'operador_administrativo'),
(Legisinc_GROUP_PROTOCOLO, 'operador_protocoloadm'),
(Legisinc_GROUP_COMISSOES, 'operador_comissoes'),
(Legisinc_GROUP_MATERIA, 'operador_materia'),
(Legisinc_GROUP_NORMA, 'operador_norma'),
(Legisinc_GROUP_SESSAO, 'operador_sessao'),
(Legisinc_GROUP_PAINEL, 'operador_painel'),
(Legisinc_GROUP_GERAL, 'operador_geral'),
(SGVP_GROUP_ADMINISTRATIVO, 'operador_administrativo'),
(SGVP_GROUP_PROTOCOLO, 'operador_protocoloadm'),
(SGVP_GROUP_COMISSOES, 'operador_comissoes'),
(SGVP_GROUP_MATERIA, 'operador_materia'),
(SGVP_GROUP_NORMA, 'operador_norma'),
(SGVP_GROUP_SESSAO, 'operador_sessao'),
(SGVP_GROUP_PAINEL, 'operador_painel'),
(SGVP_GROUP_GERAL, 'operador_geral'),
):
self.cria_usuario(user, group)
def update_groups(self):
print('')
print("\033[93m\033[1m{}\033[0m".format(
_('Atualizando grupos do Legisinc:')))
_('Atualizando grupos do SGVP:')))
for rules_group in self.rules_patterns:
group_name = rules_group['group']
rules_list = rules_group['rules']

4
sapl/rules/group_administrativo.py

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

4
sapl/rules/group_anonymous.py

@ -1,12 +1,12 @@
from sapl.materia import models as materia
from sapl.protocoloadm import models as protocoloadm
from sapl.rules import Legisinc_GROUP_ANONYMOUS, RP_ADD, RP_DELETE
from sapl.rules import SGVP_GROUP_ANONYMOUS, RP_ADD, RP_DELETE
# não possui efeito e é usada nos testes que verificam se todos os models estão
# neste arquivo rules.py
rules_group_anonymous = {
'group': Legisinc_GROUP_ANONYMOUS,
'group': SGVP_GROUP_ANONYMOUS,
'rules': [
(materia.AcompanhamentoMateria, [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.rules import Legisinc_GROUP_AUDIENCIA, __base__, __perms_publicas__
from sapl.rules import SGVP_GROUP_AUDIENCIA, __base__, __perms_publicas__
rules_group_audiencia = {
'group': Legisinc_GROUP_AUDIENCIA,
'group': SGVP_GROUP_AUDIENCIA,
'rules': [
(audiencia.AudienciaPublica, __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.materia import models as materia
from sapl.rules import Legisinc_GROUP_AUTOR, __base__, __perms_publicas__
from sapl.rules import SGVP_GROUP_AUTOR, __base__, __perms_publicas__
rules_group_autor = {
'group': Legisinc_GROUP_AUTOR,
'group': SGVP_GROUP_AUTOR,
'rules': [
(materia.Proposicao, __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.materia import models as materia
from sapl.rules import Legisinc_GROUP_COMISSOES, __base__, __perms_publicas__
from sapl.rules import SGVP_GROUP_COMISSOES, __base__, __perms_publicas__
rules_group_comissoes = {
'group': Legisinc_GROUP_COMISSOES,
'group': SGVP_GROUP_COMISSOES,
'rules': [
(materia.PautaReuniao, __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.parlamentares import models as parlamentares
from sapl.protocoloadm import models as protocoloadm
from sapl.rules import Legisinc_GROUP_GERAL, RP_ADD, __base__, __perms_publicas__, \
from sapl.rules import SGVP_GROUP_GERAL, RP_ADD, __base__, __perms_publicas__, \
__listdetailchange__
from sapl.sessao import models as sessao
rules_group_geral = {
'group': Legisinc_GROUP_GERAL,
'group': SGVP_GROUP_GERAL,
'rules': [
(base.AppConfig, __base__ + [
'menu_sistemas',

4
sapl/rules/group_materia.py

@ -2,10 +2,10 @@
from sapl.compilacao import models as compilacao
from sapl.materia import models as materia
from sapl.norma import models as norma
from sapl.rules import Legisinc_GROUP_MATERIA, __base__, __perms_publicas__
from sapl.rules import SGVP_GROUP_MATERIA, __base__, __perms_publicas__
rules_group_materia = {
'group': Legisinc_GROUP_MATERIA,
'group': SGVP_GROUP_MATERIA,
'rules': [
(materia.Anexada, __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.norma import models as norma
from sapl.rules import Legisinc_GROUP_NORMA, __base__, __perms_publicas__
from sapl.rules import SGVP_GROUP_NORMA, __base__, __perms_publicas__
rules_group_norma = {
'group': Legisinc_GROUP_NORMA,
'group': SGVP_GROUP_NORMA,
'rules': [
(norma.NormaJuridica, __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.rules import Legisinc_GROUP_PAINEL, __base__, __perms_publicas__
from sapl.rules import SGVP_GROUP_PAINEL, __base__, __perms_publicas__
rules_group_painel = {
'group': Legisinc_GROUP_PAINEL,
'group': SGVP_GROUP_PAINEL,
'rules': [
(painel.Painel, __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.materia import models as materia
from sapl.protocoloadm import models as protocoloadm
from sapl.rules import Legisinc_GROUP_PROTOCOLO, RP_ADD, __base__, __listdetailchange__, \
from sapl.rules import SGVP_GROUP_PROTOCOLO, RP_ADD, __base__, __listdetailchange__, \
__perms_publicas__
rules_group_protocolo = {
'group': Legisinc_GROUP_PROTOCOLO,
'group': SGVP_GROUP_PROTOCOLO,
'rules': [
(protocoloadm.Protocolo, __base__ + ['action_anular_protocolo'], set()),
(protocoloadm.DocumentoAdministrativo, [RP_ADD] + __listdetailchange__, set()),

4
sapl/rules/group_sessao.py

@ -1,9 +1,9 @@
from sapl.rules import Legisinc_GROUP_SESSAO, __perms_publicas__, __base__
from sapl.rules import SGVP_GROUP_SESSAO, __perms_publicas__, __base__
from sapl.sessao import models as sessao
rules_group_sessao = {
'group': Legisinc_GROUP_SESSAO,
'group': SGVP_GROUP_SESSAO,
'rules': [
(sessao.SessaoPlenaria, __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.rules import Legisinc_GROUP_VOTANTE
from sapl.rules import SGVP_GROUP_VOTANTE
rules_group_votante = {
'group': Legisinc_GROUP_VOTANTE,
'group': SGVP_GROUP_VOTANTE,
'rules': [
(parlamentares.Votante, ['can_vote'], set())
]

10
sapl/rules/map_rules.py

@ -1,4 +1,4 @@
from sapl.rules import Legisinc_GROUP_LOGIN_SOCIAL
from sapl.rules import SGVP_GROUP_LOGIN_SOCIAL
from sapl.rules.group_administrativo import rules_group_administrativo
from sapl.rules.group_anonymous import rules_group_anonymous
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
rules_group_login_social = {
'group': Legisinc_GROUP_LOGIN_SOCIAL,
'group': SGVP_GROUP_LOGIN_SOCIAL,
'rules': []
}
"""
@ -33,7 +33,7 @@ todos as rules de groups são um dicionario com duas chaves: 'group' e 'rules'
exemplo:
rules_group_exemplo = {
'group': Legisinc_GROUP_EXEMPLO,
'group': SGVP_GROUP_EXEMPLO,
'rules': [
(
model_exemplo1,
@ -49,7 +49,7 @@ rules_group_exemplo = {
}
rules_group_exemplo['rules'][0]
1 significa q usuários que estão no grupo Legisinc_GROUP_EXEMPLO
1 significa q usuários que estão no grupo SGVP_GROUP_EXEMPLO
podem acessar o que está em rules_group_exemplo['rules'][0][1], ou seja,
listar e ver os detalhes de model_exemplo1
@ -60,7 +60,7 @@ rules_group_exemplo['rules'][0]
--------------------------
rules_group_exemplo['rules'][1]
1 significa q usuários que estão no grupo Legisinc_GROUP_EXEMPLO
1 significa q usuários que estão no grupo SGVP_GROUP_EXEMPLO
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

6
sapl/rules/tests/test_rules.py

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

8
sapl/settings.py

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

8
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.054f5747.css.gz

Binary file not shown.

8
sapl/static/sapl/frontend/css/global.bbef527c.css

File diff suppressed because one or more lines are too long

BIN
sapl/static/sapl/frontend/css/global.bbef527c.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
```python
Legisinc_APPS = (
SGVP_APPS = (
...
'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:
1. Seguir os padrões de código do Legisinc
1. Seguir os padrões de código do SGVP
2. Adicionar testes unitários
3. Documentar novas funcionalidades
4. Manter compatibilidade com a API REST
## 📄 Licença
Este módulo segue a mesma licença do projeto Legisinc.
Este módulo segue a mesma licença do projeto SGVP.

2
sapl/tce/admin_views.py

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

6
sapl/templates/admin/base_site.html

@ -30,7 +30,7 @@
padding-top: 0 !important;
}
/* Estilos completos do navbar do Legisinc */
/* Estilos completos do navbar do SGVP */
#sapl-admin-navbar {
position: relative;
z-index: 1050;
@ -175,11 +175,11 @@
{% block nav-global %}{% endblock %}
{% block breadcrumbs %}
<!-- Navbar do Legisinc -->
<!-- Navbar do SGVP -->
<div id="sapl-admin-navbar">
<nav class="navbar">
<div class="container-fluid">
<a class="navbar-brand" href="/">legisinc</a>
<a class="navbar-brand" href="/">SGVP</a>
<div class="navbar-collapse" id="navbarNav">
{% navbar 'navbar.yaml' %}

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

@ -30,7 +30,7 @@
padding-top: 0 !important;
}
/* Estilos completos do navbar do Legisinc */
/* Estilos completos do navbar do SGVP */
#sapl-admin-navbar {
position: relative;
z-index: 1050;
@ -175,11 +175,11 @@
{% block nav-global %}{% endblock %}
{% block breadcrumbs %}
<!-- Navbar do Legisinc -->
<!-- Navbar do SGVP -->
<div id="sapl-admin-navbar">
<nav class="navbar">
<div class="container-fluid">
<a class="navbar-brand" href="/">legisinc</a>
<a class="navbar-brand" href="/">SGVP</a>
<div class="navbar-collapse" id="navbarNav">
{% navbar 'navbar.yaml' %}

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

@ -30,7 +30,7 @@
padding-top: 0 !important;
}
/* Estilos completos do navbar do Legisinc */
/* Estilos completos do navbar do SGVP */
#sapl-admin-navbar {
position: relative;
z-index: 1050;
@ -175,11 +175,11 @@
{% block nav-global %}{% endblock %}
{% block breadcrumbs %}
<!-- Navbar do Legisinc -->
<!-- Navbar do SGVP -->
<div id="sapl-admin-navbar">
<nav class="navbar">
<div class="container-fluid">
<a class="navbar-brand" href="/">legisinc</a>
<a class="navbar-brand" href="/">SGVP</a>
<div class="navbar-collapse" id="navbarNav">
{% navbar 'navbar.yaml' %}

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
atualizado o m&oacute;dulo Parlamentar.<br />
Ao autor parlamentar ou comissão deve ser concedido um nome de usu&aacute;rio (login) e
senha para acesso ao Legisinc, para que ele possa elaborar e fazer o envio de
senha para acesso ao SGVP, para que ele possa elaborar e fazer o envio de
proposi&ccedil;&otilde;es por meio eletr&ocirc;nico.<br />
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>
<br />
Logo abaixo, no grupo de campos rotulado &ldquo;Cadastro para
Acesso ao Legisinc&rdquo;, marque &ldquo;Sim&rdquo; para
Acesso ao SGVP&rdquo;, marque &ldquo;Sim&rdquo; para
conceder ao autor acesso ao sistema para fins de
apresenta&ccedil;&atilde;o de proposi&ccedil;&atilde;o.
Nesse caso, crie e informe no campo &ldquo;Login&rdquo; um nome
de usu&aacute;rio para que o autor utilize no acesso ao Legisinc. Se a
de usu&aacute;rio para que o autor utilize no acesso ao SGVP. Se a
Casa Legislativa n&atilde;o fizer uso do m&oacute;dulo de envio
de proposi&ccedil;&otilde;es, marque
&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
Impress&atilde;o do browser que estiver usando.<br />
A op&ccedil;&atilde;o &ldquo;Ajuda&rdquo; contem o
manual do sistema Legisinc.<br />
manual do sistema SGVP.<br />
As op&ccedil;&otilde;es, Impress&atilde;o, Ajuda e
Consultas por palavra chave, est&atilde;o presentes em todas as
telas do sistema.<br />
O item &ldquo;Copyright Interlegis&rdquo; contem a
licen&ccedil;a de uso, c&oacute;pia,
distribui&ccedil;&atilde;o e modifica&ccedil;&atilde;o
do Legisinc.<br />
do SGVP.<br />
<br />
<h2><a NAME="cons_cons">Consultas</a></h2>
<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 />
&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>
A partir da vers&atilde;o 2.0 do Legisinc passou a ser
A partir da vers&atilde;o 2.0 do SGVP passou a ser
poss&iacute;vel tamb&eacute;m a <span
style="font-weight: bold;">pesquisa por palavra contida no
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
<b>&ldquo;Autor&rdquo;</b> (normalmente, um parlamentar) fazer o envio
de proposi&ccedil;&otilde;es em meio eletr&ocirc;nico, por
meio do Legisinc.<br />
meio do SGVP.<br />
<br />
O acesso a este m&oacute;dulo se d&aacute; por login
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
marcado, o sistema permitir&aacute; a edi&ccedil;&atilde;o
do texto da proposi&ccedil;&atilde;o no pr&oacute;prio
Legisinc; ela ter&aacute; um formato padronizado, definido pelo
administrador do Legisinc.</font></p>
SGVP; ela ter&aacute; um formato padronizado, definido pelo
administrador do SGVP.</font></p>
</td>
</tr>
<tr valign="top">

2
sapl/templates/ajuda/recebimento_proposicao.html

@ -50,7 +50,7 @@ estado de proposi&ccedil;&otilde;es:<br />
<ul>
<li><b>Proposi&ccedil;&otilde;es N&atilde;o
Recebidas:</b> Proposi&ccedil;&otilde;es que
j&aacute; foram enviadas pelo autor via Legisinc, &agrave;s quais
j&aacute; foram enviadas pelo autor via SGVP, &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>
<li><b>Proposi&ccedil;&otilde;es&nbsp;
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 />
&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>
A partir da vers&atilde;o 2.0 do Legisinc passou a ser
A partir da vers&atilde;o 2.0 do SGVP passou a ser
poss&iacute;vel tamb&eacute;m a <span
style="font-weight: bold;">pesquisa por palavra contida no
texto da ATA</span>. Basta informar a

2
sapl/templates/auth/user_form.html

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

6
sapl/templates/base.html

@ -12,7 +12,7 @@
<head>
<meta charset="utf-8">
<title>{% block head_title %}{% switch "LegisincN_SWITCH" %}Legisinc-Normas - {% else %}Legisinc - {%endswitch%}{{nome_casa}}{% endblock %}</title>
<title>{% block head_title %}{% switch "SGVPN_SWITCH" %}SGVP-Normas - {% else %}SGVP - {%endswitch%}{{nome_casa}}{% endblock %}</title>
<script type="application/ld+json">
{
"@context" : "https://schema.org",
@ -67,7 +67,7 @@
{% block navigation %}
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container">
<a class="navbar-brand" href="/">legisinc</a>
<a class="navbar-brand" href="/">SGVP</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
@ -186,7 +186,7 @@
<div class="row">
<div class="col-md-12 text-center">
<p>
<strong>legisinc</strong><br>
<strong>SGVP</strong><br>
<small>AMZ Tecnologia Governamental</small>
</p>
</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>Legisinc</b>.</p></br></p>
<p>Você está recebendo este e-mail pois solicitou recuperação de senha de sua conta no site <b>SGVP</b>.</p></br></p>
<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>A equipe <b>Legisinc</b></p>
<p>A equipe <b>SGVP</b></p>

8
sapl/templates/base/tipoautor_list.html

@ -6,7 +6,7 @@
<div class="row">
<div class="col-lg-4">
<div class="list-group">
<span class="list-group-item active">Tipos de Autores do Legisinc</span>
<span class="list-group-item active">Tipos de Autores do SGVP</span>
{% for tipo in tipos_sapl %}
<a href="{% url tipo|tipoautor_contenttype_list %}" class="list-group-item">{{tipo}}</a>
{% endfor %}
@ -18,11 +18,11 @@
{{block.super}}
<div class="help-block-danger">
<strong>Atenção!!!</strong> - Não cadastre tipos de autores semelhantes
aos "Tipos de Autores do Legisinc" que estão na tabela ao lado. Esses tipos
são fixos no Legisinc pois representam seus cadastros no local apropriado.<br>
aos "Tipos de Autores do SGVP" que estão na tabela ao lado. Esses tipos
são fixos no SGVP pois representam seus cadastros no local apropriado.<br>
</div>
<div class="help-block-danger">
Novamente, NÃO cadastre "Tipos de Autor" semelhantes aos tipos do Legisinc.<br>
Novamente, NÃO cadastre "Tipos de Autor" semelhantes aos tipos do SGVP.<br>
<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",
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>
</ol>
</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 Legisinc (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 SGVP (admin).
</li>
</ol>
<ul>

2
sapl/templates/fluxo_proposicoes.html

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

16
sapl/templates/guia_projeto.html

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

2
sapl/templates/index.html

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

2
sapl/templates/materia/recibo_proposicao.html

@ -69,7 +69,7 @@
<table>
<tr>
<td align="center">
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.
Declaro que o conteúdo do texto impresso em anexo é idêntico ao conteúdo enviado eletronicamente por meio do sistema SGVP para esta proposição.
</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 name="viewport" content="width=device-width, initial-scale=1.0">
<!-- TODO: does it need this head_title here? -->
<title>{% block head_title %}{% trans 'Legisinc' %}{% endblock %}</title>
<title>{% block head_title %}{% trans 'SGVP' %}{% endblock %}</title>
{% block webpack_loader_css %}
{% render_chunk_vendors 'css' %}

2
sapl/templates/painel/mensagem.html

@ -12,7 +12,7 @@
<head>
<meta charset="UTF-8">
<!-- TODO: does it need this head_title here? -->
<title>{% block head_title %}{% trans 'Legisinc' %}{% endblock %}</title>
<title>{% block head_title %}{% trans 'SGVP' %}{% endblock %}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{% render_chunk_vendors 'css' %}

2
sapl/templates/painel/parlamentares.html

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

2
sapl/templates/painel/votacao.html

@ -11,7 +11,7 @@
<head>
<meta charset="UTF-8">
<!-- TODO: does it need this head_title here? -->
<title>{% block head_title %}{% trans 'Legisinc' %}{% endblock %}</title>
<title>{% block head_title %}{% trans 'SGVP' %}{% endblock %}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{% render_chunk_vendors 'css' %}

2
sapl/templates/painel/voto_nominal.html

@ -7,7 +7,7 @@
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>{% block head_title %}{% trans 'Legisinc' %}{% endblock %}</title>
<title>{% block head_title %}{% trans 'SGVP' %}{% endblock %}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{% render_chunk_vendors 'css' %}

6
sapl/templates/rest_framework_docs/home.html

@ -8,12 +8,12 @@
</style>
{% endblock %}
{% block logo %}
<a class="navbar-brand" href="http://sapl31demo.interlegis.leg.br">DRF Docs - Legisinc</a>
<a class="navbar-brand" href="http://sapl31demo.interlegis.leg.br">DRF Docs - SGVP</a>
{% endblock %}
{% block title %}Legisinc{% endblock %}
{% block title %}SGVP{% endblock %}
{% block jumbotron %}
<div class="jumbotron">
<h1>Legisinc </h1>
<h1>SGVP </h1>
</div>
{% endblock %}

2
sapl/templates/search/search.html

@ -11,7 +11,7 @@
{{ form.q|as_crispy_field }}
</div>
</div>
{% switch "LegisincN_SWITCH" %}
{% switch "SGVPN_SWITCH" %}
&nbsp;
{% else %}
<div class="row">

4
sapl/test_general.py

@ -4,12 +4,12 @@ from django.db.models.fields import BooleanField
from model_bakery import baker
import pytest
from .settings import Legisinc_APPS
from .settings import SGVP_APPS
pytestmark = pytest.mark.django_db
sapl_appconfs = [apps.get_app_config(n[5:]) for n in Legisinc_APPS]
sapl_appconfs = [apps.get_app_config(n[5:]) for n in SGVP_APPS]
def test_charfield_textfield():

6
sapl/test_urls.py

@ -11,12 +11,12 @@ from sapl.crud.base import PermissionRequiredForAppCrudMixin
from sapl.rules.apps import AppConfig, update_groups
from scripts.lista_urls import lista_urls
from .settings import Legisinc_APPS
from .settings import SGVP_APPS
pytestmark = pytest.mark.django_db
sapl_appconfs = [apps.get_app_config(n[5:]) for n in Legisinc_APPS]
sapl_appconfs = [apps.get_app_config(n[5:]) for n in SGVP_APPS]
_lista_urls = lista_urls()
@ -299,7 +299,7 @@ def test_urlpatterns(url_item, admin_client):
%s
""" % (url, app_name, prefixs)
else:
# ignorando app de redirecionamento de urls no padrão do Legisinc 2.5
# ignorando app de redirecionamento de urls no padrão do SGVP 2.5
pass

2
sapl/utils.py

@ -1092,7 +1092,7 @@ def google_recaptcha_configured():
def sapn_is_enabled():
import waffle
return waffle.switch_is_active('LegisincN_SWITCH')
return waffle.switch_is_active('SGVPN_SWITCH')
def timing(f):

4
scripts/anonimizador/anon.py

@ -9,9 +9,9 @@ from django.db.models.fields import CharField, TextField
from sapl.materia.models import Orgao, Origem
from sapl.norma.models import AssuntoNorma
from sapl.parlamentares.models import Municipio, NivelInstrucao, Partido
from sapl.settings import Legisinc_APPS
from sapl.settings import SGVP_APPS
sapl_appconfs = [apps.get_app_config(n.split('.')[1]) for n in Legisinc_APPS]
sapl_appconfs = [apps.get_app_config(n.split('.')[1]) for n in SGVP_APPS]
models = [model for app in sapl_appconfs for model in app.get_models()]
excluidos = Origem, Orgao, AssuntoNorma, Partido, NivelInstrucao, Municipio,

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

Loading…
Cancel
Save