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/
docker-compose.yml docker-compose.yml
docker-compose.yaml docker-compose.yaml
# Claude Code
.claude/context/*.md
NOTAS.txt

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 Legisinc * Remove setup.py do projeto SGVP
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 Legisinc em iframe (#3653) * Conserta lógica para embutir SGVP 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

4
LOCALHOST_SETUP.md

@ -1,6 +1,6 @@
# Subir o SAPL apontando para o banco remoto (localhost) # 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 ## 1) Preparar o ambiente Python
@ -16,7 +16,7 @@ pip install -r requirements/requirements.txt
Edite `sapl/.env` com os valores do banco remoto: Edite `sapl/.env` com os valores do banco remoto:
```env ```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> SECRET_KEY=<sua-chave-secreta>
DEBUG=True DEBUG=True
EMAIL_USE_TLS=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 ~~**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. 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`), 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 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. 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 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 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. 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 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 Instalação do Ambiente de Desenvolvimento
========================================= =========================================
@ -46,12 +46,12 @@ Instalação do Solr
Instruções para Deploy 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 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 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 Legisinc <https://discord.gg/fzXSbhZbcy>`_ `Sala do Discord "Somos Interlegis" sobre SGVP <https://discord.gg/fzXSbhZbcy>`_
Perguntas Frequentes 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 ## ✅ 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)
Legisinc - http://localhost:8000 SGVP - 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 Legisinc ### Superusuário SGVP
- **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 Legisinc # Ver logs do SGVP
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
- **Legisinc**: http://localhost:8000 - **SGVP**: 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 Legisinc**: http://localhost:8000/api/ - **API SGVP**: 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 |
|---------|---------------|---------------| |---------|---------------|---------------|
| Legisinc | 8000 | 8000 | | SGVP | 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
``` ```
### Legisinc não conecta ao banco ### SGVP 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 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** **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 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 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.

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 ## 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_PASSWORD: interlegis
ADMIN_EMAIL: email@dominio.net ADMIN_EMAIL: email@dominio.net
DEBUG: 'False' 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 # ... 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 ### 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 ```bash
docker run --rm postgres:10.5-alpine psql \ 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" -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) │ │ (Aplicação) │
└────────┬────────┘ └────────┬────────┘
├──→ legisinc.com.br:5432 (PostgreSQL Remoto) ├──→ sgvp.com.br:5432 (PostgreSQL Remoto)
├──→ SOLR (Porta 8983) ├──→ SOLR (Porta 8983)
@ -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 Legisinc # Reiniciar o SGVP
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 Legisinc │ ├── Dockerfile # Imagem do SGVP
│ └── 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 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. 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 Legisinc # Fluxo de Proposições no SGVP
## 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 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 ## 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 **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 ## 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`) ### 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 Legisinc │ └── Dockerfile # Imagem do SGVP
├── 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 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/ - **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 Legisinc disponibiliza uma API REST completa para integração com outros sist
## Tipos de Usuários e Permissões ## 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 ### Grupos de Usuários Principais
#### 1. **Operador Geral** (Superusuário Legisinc) #### 1. **Operador Geral** (Superusuário SGVP)
**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 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) - **`.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 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 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 Legisinc no admin 1. `/sapl/templates/admin/base_site.html` - Navbar do SGVP 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 Legisinc:** 3.1.x **Versão do SGVP:** 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 Legisinc # Integração OnlyOffice Document Server no SGVP
## Visão Geral ## Visão Geral
@ -115,7 +115,7 @@ Após criar/editar o texto com OnlyOffice:
│ 1. Acessa editor │ 1. Acessa editor
┌──────────────────┐ ┌──────────────────┐
Legisinc (Django) │ SGVP (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
┌──────────────────┐ ┌──────────────────┐
Legisinc (Django) │ SGVP (Django) │
└──────┬───────────┘ └──────┬───────────┘
│ 4. Retorna configuração JSON │ 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) │ 7. Retorna documento (ou documento em branco)
@ -154,7 +154,7 @@ Após criar/editar o texto com OnlyOffice:
│ 9. AutoSave │ 9. AutoSave
┌──────────────────┐ ┌──────────────────┐
Legisinc (Django) │ SGVP (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:
- ✅ Legisinc (Python 3.9) na porta 8000 - ✅ SGVP (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
┌──────────────────┐ ┌──────────────────┐
Legisinc (Django) │ :8000 SGVP (Django) │ :8000
│ Python 3.9 │ │ Python 3.9 │
└──────┬───────────┘ └──────┬───────────┘
@ -156,7 +156,7 @@ ONLYOFFICE_JWT_ENABLED=False
### Portas: ### Portas:
- **8000**: Legisinc Django - **8000**: SGVP 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 Legisinc 2. **Use HTTPS** para OnlyOffice e SGVP
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:**
- Legisinc: Python 3.9 + Django - SGVP: 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**: Legisinc - **8000**: SGVP
- **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 Legisinc**: 2. **Acesse o SGVP**:
```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: Legisinc - 8000: SGVP
- 8001: OnlyOffice - 8001: OnlyOffice
## Próximos Passos ## 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** 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 Legisinc - até versão 2.5 Créditos do SGVP - 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 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. 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:: 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 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: 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 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: 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 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;" 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 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**:: * **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 Legisinc em:: * Acesse o SGVP 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 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 ./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:: * 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 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 * 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 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 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 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); *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** 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) 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: 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) (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) (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 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 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? 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 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 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 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. 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:

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

@ -329,6 +329,20 @@ a {
} }
// Navbar customization // 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 { .navbar.navbar-dark.bg-dark {
background-color: $primary-color !important; background-color: $primary-color !important;
box-shadow: $box-shadow; box-shadow: $box-shadow;
@ -336,6 +350,7 @@ a {
.navbar-brand { .navbar-brand {
font-weight: 600; font-weight: 600;
color: #FFFFFF;
transition: $transition-fast; transition: $transition-fast;
&:hover { &:hover {
@ -344,6 +359,7 @@ a {
} }
.nav-link { .nav-link {
color: #FFFFFF !important;
transition: $transition-fast; transition: $transition-fast;
&:hover { &: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 // 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 $secondary-color: #3DB8CF; // Azul claro - Modernidade, tecnologia, fluidez
// Cores Neutras // Cores Neutras

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

@ -8,12 +8,18 @@
flex-basis: 100%; flex-basis: 100%;
a { a {
white-space: nowrap; white-space: nowrap;
color: #93a4aa; color: #FFFFFF;
transition: color 0.2s ease-in-out;
} }
.nav-link { .nav-link {
padding-top: 0; padding-top: 0;
padding-bottom: 0; padding-bottom: 0;
line-height: 4.5rem; line-height: 4.5rem;
&:hover,
&:focus {
color: #3DB8CF;
}
} }
.dropdown-menu { .dropdown-menu {
background-color: #20282a; background-color: #20282a;
@ -35,7 +41,7 @@
min-width: 15rem; min-width: 15rem;
} }
&:hover { &:hover {
background-color: #364347; background-color: #3DB8CF;
a { a {
color: white; color: white;
} }
@ -51,7 +57,7 @@
min-width: 20%;; min-width: 20%;;
} }
a:not([href]):not([tabindex]) { a:not([href]):not([tabindex]) {
color: #777; color: #FFFFFF;
} }
&.justify-content-end { &.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", "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.054f5747.css": { "css/global.bbef527c.css": {
"name": "css/global.054f5747.css", "name": "css/global.bbef527c.css",
"path": "/home/bruno/sapl/sapl/static/sapl/frontend/css/global.054f5747.css", "path": "/home/bruno/sapl/sapl/static/sapl/frontend/css/global.bbef527c.css",
"publicPath": "/static/sapl/frontend/css/global.054f5747.css" "publicPath": "/static/sapl/frontend/css/global.bbef527c.css"
}, },
"css/global.054f5747.css.gz": { "css/global.bbef527c.css.gz": {
"name": "css/global.054f5747.css.gz", "name": "css/global.bbef527c.css.gz",
"path": "/home/bruno/sapl/sapl/static/sapl/frontend/css/global.054f5747.css.gz", "path": "/home/bruno/sapl/sapl/static/sapl/frontend/css/global.bbef527c.css.gz",
"publicPath": "/static/sapl/frontend/css/global.054f5747.css.gz" "publicPath": "/static/sapl/frontend/css/global.bbef527c.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.054f5747.css", "css/global.bbef527c.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 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 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 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}" 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.Legisinc_VERSION return settings.SGVP_VERSION
class Meta: class Meta:
model = CasaLegislativa model = CasaLegislativa

8
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.Legisinc_VERSION, "version": settings.SGVP_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.Legisinc_VERSION, "version": settings.SGVP_VERSION,
"time": timezone.now().isoformat(), "time": timezone.now().isoformat(),
} }
if request.query_params.get("fmt") == "txt": if request.query_params.get("fmt") == "txt":
@ -90,8 +90,8 @@ class AppzVersionView(APIView):
def get(self, request): def get(self, request):
try: try:
payload = { payload = {
'name': 'Legisinc', 'name': 'SGVP',
'version': settings.Legisinc_VERSION, 'version': settings.SGVP_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 - Legisinc' admin.site.site_title = 'Administração - SGVP'
admin.site.site_header = 'Administração - Legisinc' admin.site.site_header = 'Administração - SGVP'
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 = "[Legisinc] {} {}".format(str(doc_mat), msg) subject = "[SGVP] {} {}".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 = "[Legisinc] {} {}".format(str(doc_mat), msg) subject = "[SGVP] {} {}".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 Legisinc_GROUP_AUTOR, Legisinc_GROUP_VOTANTE from sapl.rules import SGVP_GROUP_AUTOR, SGVP_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.Legisinc_APPS)) map(lambda x: x.split('.')[-1], settings.SGVP_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=Legisinc_GROUP_AUTOR) g_autor = Group.objects.get(name=SGVP_GROUP_AUTOR)
g_votante = Group.objects.get(name=Legisinc_GROUP_VOTANTE) g_votante = Group.objects.get(name=SGVP_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 Legisinc ligados ao autor acima selecionado'), label=_('Usuários do SGVP 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 Legisinc'), verbose_name=_('Modelagem no SGVP'),
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 Legisinc:'))) _('Atualizando registros TipoAutor do SGVP:')))
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 Legisinc')) vn = "{} {}".format(vn, _('Externo ao SGVP'))
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 = "Legisinc - Confirmação de Conta" assunto = "SGVP - 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 " +
"Legisinc com o perfil de Autor. Agora você pode " + "SGVP 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"

4
sapl/context_processors.py

@ -34,9 +34,9 @@ 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 = _('Legisinc') \ verbose_name = _('SGVP') \
if not sapn_is_enabled() \ 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 from sapl.base.models import CasaLegislativa
casa_legislativa = CasaLegislativa.objects.first() casa_legislativa = CasaLegislativa.objects.first()

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_Legisinc = self.config['base_url'] BASE_URL_SGVP = self.config['base_url']
BASE_URL_Legisinc = BASE_URL_Legisinc[:BASE_URL_Legisinc.find('/', 8)] BASE_URL_SGVP = BASE_URL_SGVP[:BASE_URL_SGVP.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_Legisinc + texto_integral.url url_conteudo = BASE_URL_SGVP + 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_Legisinc + reverse('sapl.norma:normajuridica_detail', url_conteudo = BASE_URL_SGVP + 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_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') 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: Legisinc\n" "Project-Id-Version: SGVP\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 Legisinc" msgid "Acesso ao SGVP"
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 "Legisinc" msgid "SGVP"
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: Legisinc\n" "Project-Id-Version: SGVP\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 Legisinc" msgid "Acesso ao SGVP"
msgstr "Acceso a Legisinc" msgstr "Acceso a SGVP"
#: 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 "Legisinc" msgid "SGVP"
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 Legisinc" msgid "Acesso ao SGVP"
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 "Legisinc" msgid "SGVP"
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 Legisinc pelo nome do serviço # OnlyOffice precisa acessar o container SGVP 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 Legisinc_GROUP_AUTOR from sapl.rules import SGVP_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=Legisinc_GROUP_AUTOR) grupo_autor = Group.objects.get(name=SGVP_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 Legisinc.') msg = _('Um erro inesperado ocorreu. Entre em contato com o suporte do SGVP.')
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 Legisinc.') msg = _('Um erro inesperado ocorreu. Entre em contato com o suporte do SGVP.')
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 Legisinc_GROUP_VOTANTE from sapl.rules import SGVP_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=Legisinc_GROUP_VOTANTE)[0] g = Group.objects.filter(name=SGVP_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 Legisinc_GROUP_VOTANTE from sapl.rules import SGVP_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=Legisinc_GROUP_VOTANTE)[0] g = Group.objects.filter(name=SGVP_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 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 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 Legisinc.') msg = _('Um erro inesperado ocorreu. Entre em contato com o suporte do SGVP.')
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_Legisinc(self): def test_redireciona_index_SGVP(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,
RedirecionaLegisincIndex, RedirecionaSessaoPlenaria) RedirecionaSGVPIndex, RedirecionaSessaoPlenaria)
app_name = AppConfig.name app_name = AppConfig.name
urlpatterns = [ urlpatterns = [
url(r'^default_index_html$', url(r'^default_index_html$',
RedirecionaLegisincIndex.as_view(), RedirecionaSGVPIndex.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 RedirecionaLegisincIndex(RedirectView): class RedirecionaSGVPIndex(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 Legisinc version args += "&salvar=%s" % ('Pesquisar') # Default in both SGVP 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 Legisinc version args += "&salvar=%s" % ('Pesquisar') # Default in both SGVP version
url = "%s%s" % (url, args) 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 # 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 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` 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 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} __perms_publicas__ = {RP_LIST, RP_DETAIL}
Legisinc_GROUP_ADMINISTRATIVO = _("Operador Administrativo") SGVP_GROUP_ADMINISTRATIVO = _("Operador Administrativo")
Legisinc_GROUP_AUDIENCIA = _("Operador de Audiência") SGVP_GROUP_AUDIENCIA = _("Operador de Audiência")
Legisinc_GROUP_PROTOCOLO = _("Operador de Protocolo Administrativo") SGVP_GROUP_PROTOCOLO = _("Operador de Protocolo Administrativo")
Legisinc_GROUP_COMISSOES = _("Operador de Comissões") SGVP_GROUP_COMISSOES = _("Operador de Comissões")
Legisinc_GROUP_MATERIA = _("Operador de Matéria") SGVP_GROUP_MATERIA = _("Operador de Matéria")
Legisinc_GROUP_NORMA = _("Operador de Norma Jurídica") SGVP_GROUP_NORMA = _("Operador de Norma Jurídica")
Legisinc_GROUP_SESSAO = _("Operador de Sessão Plenária") SGVP_GROUP_SESSAO = _("Operador de Sessão Plenária")
Legisinc_GROUP_PAINEL = _("Operador de Painel Eletrônico") SGVP_GROUP_PAINEL = _("Operador de Painel Eletrônico")
Legisinc_GROUP_GERAL = _("Operador Geral") SGVP_GROUP_GERAL = _("Operador Geral")
Legisinc_GROUP_AUTOR = _("Autor") SGVP_GROUP_AUTOR = _("Autor")
Legisinc_GROUP_VOTANTE = _("Votante") SGVP_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
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 # 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
Legisinc_GROUP_ANONYMOUS = '' SGVP_GROUP_ANONYMOUS = ''
Legisinc_GROUPS = [ SGVP_GROUPS = [
Legisinc_GROUP_ADMINISTRATIVO, SGVP_GROUP_ADMINISTRATIVO,
Legisinc_GROUP_PROTOCOLO, SGVP_GROUP_PROTOCOLO,
Legisinc_GROUP_COMISSOES, SGVP_GROUP_COMISSOES,
Legisinc_GROUP_MATERIA, SGVP_GROUP_MATERIA,
Legisinc_GROUP_NORMA, SGVP_GROUP_NORMA,
Legisinc_GROUP_SESSAO, SGVP_GROUP_SESSAO,
Legisinc_GROUP_PAINEL, SGVP_GROUP_PAINEL,
Legisinc_GROUP_GERAL, SGVP_GROUP_GERAL,
Legisinc_GROUP_AUTOR, SGVP_GROUP_AUTOR,
Legisinc_GROUP_VOTANTE, SGVP_GROUP_VOTANTE,
Legisinc_GROUP_LOGIN_SOCIAL, SGVP_GROUP_LOGIN_SOCIAL,
Legisinc_GROUP_ANONYMOUS, 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.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 (Legisinc_GROUP_ADMINISTRATIVO, Legisinc_GROUP_COMISSOES, from sapl.rules import (SGVP_GROUP_ADMINISTRATIVO, SGVP_GROUP_COMISSOES,
Legisinc_GROUP_GERAL, Legisinc_GROUP_MATERIA, Legisinc_GROUP_NORMA, SGVP_GROUP_GERAL, SGVP_GROUP_MATERIA, SGVP_GROUP_NORMA,
Legisinc_GROUP_PAINEL, Legisinc_GROUP_PROTOCOLO, SGVP_GROUP_PAINEL, SGVP_GROUP_PROTOCOLO,
Legisinc_GROUP_SESSAO) SGVP_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 (
(Legisinc_GROUP_ADMINISTRATIVO, 'operador_administrativo'), (SGVP_GROUP_ADMINISTRATIVO, 'operador_administrativo'),
(Legisinc_GROUP_PROTOCOLO, 'operador_protocoloadm'), (SGVP_GROUP_PROTOCOLO, 'operador_protocoloadm'),
(Legisinc_GROUP_COMISSOES, 'operador_comissoes'), (SGVP_GROUP_COMISSOES, 'operador_comissoes'),
(Legisinc_GROUP_MATERIA, 'operador_materia'), (SGVP_GROUP_MATERIA, 'operador_materia'),
(Legisinc_GROUP_NORMA, 'operador_norma'), (SGVP_GROUP_NORMA, 'operador_norma'),
(Legisinc_GROUP_SESSAO, 'operador_sessao'), (SGVP_GROUP_SESSAO, 'operador_sessao'),
(Legisinc_GROUP_PAINEL, 'operador_painel'), (SGVP_GROUP_PAINEL, 'operador_painel'),
(Legisinc_GROUP_GERAL, 'operador_geral'), (SGVP_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 Legisinc:'))) _('Atualizando grupos do SGVP:')))
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 Legisinc_GROUP_ADMINISTRATIVO, __base__, __perms_publicas__ from sapl.rules import SGVP_GROUP_ADMINISTRATIVO, __base__, __perms_publicas__
rules_group_administrativo = { rules_group_administrativo = {
'group': Legisinc_GROUP_ADMINISTRATIVO, 'group': SGVP_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 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 # 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': Legisinc_GROUP_ANONYMOUS, 'group': SGVP_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 Legisinc_GROUP_AUDIENCIA, __base__, __perms_publicas__ from sapl.rules import SGVP_GROUP_AUDIENCIA, __base__, __perms_publicas__
rules_group_audiencia = { rules_group_audiencia = {
'group': Legisinc_GROUP_AUDIENCIA, 'group': SGVP_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 Legisinc_GROUP_AUTOR, __base__, __perms_publicas__ from sapl.rules import SGVP_GROUP_AUTOR, __base__, __perms_publicas__
rules_group_autor = { rules_group_autor = {
'group': Legisinc_GROUP_AUTOR, 'group': SGVP_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 Legisinc_GROUP_COMISSOES, __base__, __perms_publicas__ from sapl.rules import SGVP_GROUP_COMISSOES, __base__, __perms_publicas__
rules_group_comissoes = { rules_group_comissoes = {
'group': Legisinc_GROUP_COMISSOES, 'group': SGVP_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 Legisinc_GROUP_GERAL, RP_ADD, __base__, __perms_publicas__, \ from sapl.rules import SGVP_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': Legisinc_GROUP_GERAL, 'group': SGVP_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 Legisinc_GROUP_MATERIA, __base__, __perms_publicas__ from sapl.rules import SGVP_GROUP_MATERIA, __base__, __perms_publicas__
rules_group_materia = { rules_group_materia = {
'group': Legisinc_GROUP_MATERIA, 'group': SGVP_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 Legisinc_GROUP_NORMA, __base__, __perms_publicas__ from sapl.rules import SGVP_GROUP_NORMA, __base__, __perms_publicas__
rules_group_norma = { rules_group_norma = {
'group': Legisinc_GROUP_NORMA, 'group': SGVP_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 Legisinc_GROUP_PAINEL, __base__, __perms_publicas__ from sapl.rules import SGVP_GROUP_PAINEL, __base__, __perms_publicas__
rules_group_painel = { rules_group_painel = {
'group': Legisinc_GROUP_PAINEL, 'group': SGVP_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 Legisinc_GROUP_PROTOCOLO, RP_ADD, __base__, __listdetailchange__, \ from sapl.rules import SGVP_GROUP_PROTOCOLO, RP_ADD, __base__, __listdetailchange__, \
__perms_publicas__ __perms_publicas__
rules_group_protocolo = { rules_group_protocolo = {
'group': Legisinc_GROUP_PROTOCOLO, 'group': SGVP_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 Legisinc_GROUP_SESSAO, __perms_publicas__, __base__ from sapl.rules import SGVP_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': Legisinc_GROUP_SESSAO, 'group': SGVP_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 Legisinc_GROUP_VOTANTE from sapl.rules import SGVP_GROUP_VOTANTE
rules_group_votante = { rules_group_votante = {
'group': Legisinc_GROUP_VOTANTE, 'group': SGVP_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 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_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': Legisinc_GROUP_LOGIN_SOCIAL, 'group': SGVP_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': Legisinc_GROUP_EXEMPLO, 'group': SGVP_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 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, 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 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, 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__, 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 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.Legisinc_APPS] sapl_appconfs = [apps.get_app_config(n[5:]) for n in settings.SGVP_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', Legisinc_GROUPS) @pytest.mark.parametrize('group_item', SGVP_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='
Legisinc_VERSION = '3.1.164-RC5' SGVP_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'
# Legisinc business apps in dependency order # SGVP business apps in dependency order
Legisinc_APPS = ( SGVP_APPS = (
'sapl.audiencia', 'sapl.audiencia',
'sapl.base', 'sapl.base',
'sapl.crud', 'sapl.crud',
@ -101,7 +101,7 @@ INSTALLED_APPS = (
'django_prometheus', 'django_prometheus',
) + Legisinc_APPS ) + SGVP_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

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 ### 1. Registrar no settings.py
```python ```python
Legisinc_APPS = ( SGVP_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 Legisinc 1. Seguir os padrões de código do SGVP
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 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): def tce_admin_index(request):
""" """
Dashboard principal do TCE no admin Dashboard principal do TCE no admin
Com navbar e footer padrão do Legisinc Com navbar e footer padrão do SGVP
""" """
context = { context = {
'title': 'Tribunal de Contas (TCE)', 'title': 'Tribunal de Contas (TCE)',

6
sapl/templates/admin/base_site.html

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

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

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

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

@ -30,7 +30,7 @@
padding-top: 0 !important; padding-top: 0 !important;
} }
/* Estilos completos do navbar do Legisinc */ /* Estilos completos do navbar do SGVP */
#sapl-admin-navbar { #sapl-admin-navbar {
position: relative; position: relative;
z-index: 1050; z-index: 1050;
@ -175,11 +175,11 @@
{% block nav-global %}{% endblock %} {% block nav-global %}{% endblock %}
{% block breadcrumbs %} {% block breadcrumbs %}
<!-- Navbar do Legisinc --> <!-- Navbar do SGVP -->
<div id="sapl-admin-navbar"> <div id="sapl-admin-navbar">
<nav class="navbar"> <nav class="navbar">
<div class="container-fluid"> <div class="container-fluid">
<a class="navbar-brand" href="/">legisinc</a> <a class="navbar-brand" href="/">SGVP</a>
<div class="navbar-collapse" id="navbarNav"> <div class="navbar-collapse" id="navbarNav">
{% navbar 'navbar.yaml' %} {% 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 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 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 /> 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 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 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 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 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 Legisinc.<br /> manual do sistema SGVP.<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 Legisinc.<br /> do SGVP.<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 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 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 Legisinc.<br /> meio do SGVP.<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
Legisinc; ela ter&aacute; um formato padronizado, definido pelo SGVP; ela ter&aacute; um formato padronizado, definido pelo
administrador do Legisinc.</font></p> administrador do SGVP.</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 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> 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 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 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 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="row">
<div class="col-md-6 mb-4"> <div class="col-md-6 mb-4">

6
sapl/templates/base.html

@ -12,7 +12,7 @@
<head> <head>
<meta charset="utf-8"> <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"> <script type="application/ld+json">
{ {
"@context" : "https://schema.org", "@context" : "https://schema.org",
@ -67,7 +67,7 @@
{% block navigation %} {% block navigation %}
<nav class="navbar navbar-expand-lg navbar-dark bg-dark"> <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container"> <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"> <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> <span class="navbar-toggler-icon"></span>
</button> </button>
@ -186,7 +186,7 @@
<div class="row"> <div class="row">
<div class="col-md-12 text-center"> <div class="col-md-12 text-center">
<p> <p>
<strong>legisinc</strong><br> <strong>SGVP</strong><br>
<small>AMZ Tecnologia Governamental</small> <small>AMZ Tecnologia Governamental</small>
</p> </p>
</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>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> <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>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="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 Legisinc</span> <span class="list-group-item active">Tipos de Autores do SGVP</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 Legisinc" que estão na tabela ao lado. Esses tipos aos "Tipos de Autores do SGVP" que estão na tabela ao lado. Esses tipos
são fixos no Legisinc pois representam seus cadastros no local apropriado.<br> são fixos no SGVP 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 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. <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 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> </li>
</ol> </ol>
<ul> <ul>

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 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> <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 Legisinc - {{nome_casa}}{% endblock %} {% block head_title %}Guia do Projeto SGVP - {{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 Legisinc</h1> <h1><i class="fas fa-book"></i> Guia do Projeto SGVP</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 Legisinc. Este documento contém informações completas sobre a arquitetura, módulos, fluxos de trabalho e permissões do SGVP.
</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>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. 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 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="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 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"> <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>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 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">
<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 Legisinc</p> <p class="card-description">Documentação completa do sistema SGVP</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

2
sapl/templates/materia/recibo_proposicao.html

@ -69,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 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> </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 'Legisinc' %}{% endblock %}</title> <title>{% block head_title %}{% trans 'SGVP' %}{% endblock %}</title>
{% block webpack_loader_css %} {% block webpack_loader_css %}
{% render_chunk_vendors 'css' %} {% render_chunk_vendors 'css' %}

2
sapl/templates/painel/mensagem.html

@ -12,7 +12,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<!-- TODO: does it need this head_title here? --> <!-- 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"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
{% render_chunk_vendors 'css' %} {% render_chunk_vendors 'css' %}

2
sapl/templates/painel/parlamentares.html

@ -13,7 +13,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<!-- TODO: does it need this head_title here? --> <!-- 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"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
{% render_chunk_vendors 'css' %} {% render_chunk_vendors 'css' %}

2
sapl/templates/painel/votacao.html

@ -11,7 +11,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<!-- TODO: does it need this head_title here? --> <!-- 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"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
{% render_chunk_vendors 'css' %} {% render_chunk_vendors 'css' %}

2
sapl/templates/painel/voto_nominal.html

@ -7,7 +7,7 @@
<html lang="pt-br"> <html lang="pt-br">
<head> <head>
<meta charset="UTF-8"> <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"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
{% render_chunk_vendors 'css' %} {% render_chunk_vendors 'css' %}

6
sapl/templates/rest_framework_docs/home.html

@ -8,12 +8,12 @@
</style> </style>
{% endblock %} {% endblock %}
{% block logo %} {% 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 %} {% endblock %}
{% block title %}Legisinc{% endblock %} {% block title %}SGVP{% endblock %}
{% block jumbotron %} {% block jumbotron %}
<div class="jumbotron"> <div class="jumbotron">
<h1>Legisinc </h1> <h1>SGVP </h1>
</div> </div>
{% endblock %} {% endblock %}

2
sapl/templates/search/search.html

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

4
sapl/test_general.py

@ -4,12 +4,12 @@ from django.db.models.fields import BooleanField
from model_bakery import baker from model_bakery import baker
import pytest import pytest
from .settings import Legisinc_APPS from .settings import SGVP_APPS
pytestmark = pytest.mark.django_db 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(): 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 sapl.rules.apps import AppConfig, update_groups
from scripts.lista_urls import lista_urls from scripts.lista_urls import lista_urls
from .settings import Legisinc_APPS from .settings import SGVP_APPS
pytestmark = pytest.mark.django_db 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() _lista_urls = lista_urls()
@ -299,7 +299,7 @@ def test_urlpatterns(url_item, admin_client):
%s %s
""" % (url, app_name, prefixs) """ % (url, app_name, prefixs)
else: 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 pass

2
sapl/utils.py

@ -1092,7 +1092,7 @@ def google_recaptcha_configured():
def sapn_is_enabled(): def sapn_is_enabled():
import waffle import waffle
return waffle.switch_is_active('LegisincN_SWITCH') return waffle.switch_is_active('SGVPN_SWITCH')
def timing(f): 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.materia.models import Orgao, Origem
from sapl.norma.models import AssuntoNorma from sapl.norma.models import AssuntoNorma
from sapl.parlamentares.models import Municipio, NivelInstrucao, Partido 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()] models = [model for app in sapl_appconfs for model in app.get_models()]
excluidos = Origem, Orgao, AssuntoNorma, Partido, NivelInstrucao, Municipio, excluidos = Origem, Orgao, AssuntoNorma, Partido, NivelInstrucao, Municipio,

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

Loading…
Cancel
Save