Performance-only slice extracted from feat/rate-limiter-2026 (commit
2f2a976df), which bundled query-optimization work in with unrelated
rate-limiter/caching changes.
- customize_link_materia() and the Ordem do Dia / Expediente ListViews
now use prefetched querysets instead of per-row queries.
- get_etiqueta_protocolos() batch-fetches MateriaLegislativa and
DocumentoAdministrativo instead of querying per protocolo in a loop.
- New migration redefines the materia_materiaemtramitacao view and adds
a concurrent index (tram_materia_id_desc) backing the tramitacao
prefetch.
- Drops a redundant .distinct() + order_by on a related field in
RelatorioMateriasTramitacaoFilterSet.qs.
- Removes the unused painel_mensagem/parlamentar/votacao views and
templates (also bundled into 2f2a976df by mistake).
- Adds CLAUDE.md project documentation.
Note: feat/painel-votacao-v2 still imports painel_mensagem_view,
painel_parlamentar_view and painel_votacao_view. That branch will need
reconciling with this removal when it's rebased onto 3.1.x.
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Edward <9326037+edwardoliveira@users.noreply.github.com>
* fix: corrige fluxo de votação nominal no painel
* fix: não exibe 'Não votou' no painel para matérias sem voto individual
O painel só deve marcar "Não votou" quando a matéria tem voto nominal
de fato. Para Leitura, Simbólica, Secreta ou quando não há matéria
aberta (ex.: sessão solene), tipo_votacao chega como 'Leitura' ou fica
ausente na resposta, e o parlamentar nunca recebe um voto — o que
antes caía no fallback de show_voto() e rotulava incorretamente todos
os presentes como "Não votou".
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
* fix: aplica ajustes da revisão do #3855 na votação nominal
- renumera as migrações para 0071/0072, após 0070_presenca_unica_por_sessao
- encerramento conta só os presentes ativos e grava 'Não Votou' para quem não votou
- vínculo dos votos ao registro e 'Não Votou' via save()/create(), para ficarem no AuditLog
- fechar outras votações usa save(update_fields=...), zera registro_aberto e fica no AuditLog
- abertura simultânea mostra erro em vez de 500; "foram fechadas" só após commit
- poll do tablet não acumula mensagens; voto_individual.html exibe messages
- poll do tablet recarrega em resposta não-JSON e não sobrepõe requisições
- remove timers duplicados de conta_votos e o hidden obsoleto em nominal.html
- painel só mostra "Não votou" após o registro da votação
- "Registrar Votação" volta a ser GET
- 0071 carrega só os grupos duplicados; 0072 zera registro_aberto legado
- usa get_or_create diretamente e remove código morto
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Edward <9326037+edwardoliveira@users.noreply.github.com>
* Corrige polling excessivo em /voto-individual/
- Adiciona @login_required em votante_view para que usuários
anônimos sejam redirecionados ao login em vez de receberem o
template com auto-reload.
- Corrige bug do relógio: setInterval recursivo dentro de
startTime() acumulava timers exponencialmente. Trocado por
setTimeout, mantendo apenas um timer pendente.
- Move o script de reload/relógio para dentro do bloco
{% if not error_message %} para que a variante de erro não
agende reloads de 30s.
Reduz drasticamente o volume de requisições que disparavam o
rate limiter (RATE_LIMITER_RATE=35/m) quando vários parlamentares
mantinham a tela aberta atrás do mesmo IP NAT.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* Bloqueia /voto-individual/ para usuários sem Votante/can_vote
Antes, usuários autenticados sem registro de Votante ou sem a
permissão parlamentares.can_vote recebiam HTTP 200 com um template
de erro (e, antes do commit anterior, ainda traziam o JS de auto-
reload). Agora a view exige as duas condições no início e retorna
HTTP 403 caso falhe:
- @permission_required('parlamentares.can_vote', raise_exception=True)
garante a permissão (com raise_exception para 403 ao invés do
redirect padrão pra LOGIN_URL).
- Checagem inline de Votante.objects.filter(user=...).exists() pega
o caso de superusers (que passam pelo bypass automático de
permissões do Django mas não têm cadastro de Votante) e de
qualquer custom group que conceda can_vote sem o cadastro.
Mantém HTTP 200 com mensagem amigável para falhas de estado que
um votante legítimo pode encontrar (nenhuma matéria aberta,
parlamentar não presente na sessão).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: joao <joao@mezzoplanejamento.com.br>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* Fix #2927 - Matérias apenas lidas, mas não votadas
* Adiciona Leitura para OrdemDia e cria model RegistroLeitura
* Adiciona cancelamento de leitura
* Adiciona matérias apenas lidas no painel
* Adiciona url de cancelar leitura
* Fix permissões
* Adiciona registro de usuário e ip no RegistroLeitura
* Criação de sessão solene
* Inserção de mensagem solene
* Alteracao do nome de mensagem para tema
* Esconde ou mostra tema da sessao de acordo com o tipo da sessao
* Migrations e merge
* Mudanças no arquivo settings para uso de Log
Loggers inseridos em sessao/views.py
alteracao no gitignore
adicionados loggers em audiencia e base
terminados os logs de comissoes
loggers na view do app materia
loggers feitos nos forms de materia e no app norma
adicionado logging no app painel
adicionados loggins no app parlamentares
adicionados loggins no app protocoloadm
adicionados loggins no app redireciona_urls
adicionados loggings no app relatorios
adicionados loggings no app rules
adicionados loggings no app api
adicionados loggings nos apps crud e compilacao
Fix typo
Adicionando informação de host no log (em progresso)
Comentando trecho com problema
correcao do logger, tirando-o das funcoes e colocando na classe
correcao do logger, tirando-o das funcoes e colocando na classe concluido
Conserta log errado no import
Remove arquivo desnecessário
Remove arquivo desnecessário
Remove chamada ao pdb
Adiciona logger ausente em DevolverProposicaoForm
correcoes nos loggins para api, audiencia e base
correcoes nos loggins para comissoes
correcoes nos loggins para compilacao
correcoes nos loggins para crud
correcoes nos loggins para materia
correcoes nos loggings para o arquivo views.py de norma
correção de bugs.
Correção de bugs no funcionamento do log. Informação de IP do host ainda não funciona corretamente.
Com endereço IP. Faltando confirmar se o endereço está correto.
correcoes nos loggings para o app norma
correcoes nos loggings para os apps painel e parlamentares
correcoes nos loggings para o app protocoloadm
mais correcoes nos loggings para o app protocoloadm
correcoes nos loggings para o app redireciona_urls
correcoes nos loggins para o app relatorios
correcoes nos loggins em forms de parlamentares
correcoes nos loggins em views de protocoloadm
correcao nos loggings de sessao
inserido o hostname no log
testando logger com username
Inserção username no log. Incompleto.
logging username nos apps materia, norma e painel
alteracao no padrao de logging até painel
alteracao no padrao de logging
novas correcoes nos loggings
* correções
* Adiciona teste de vie em SessaoPlenaria
* Adiciona teste de view no CasaLegislativa e TipoAutor
* Corrigi erros relacionados a PEP8
* Adiciona logotipo no painel
* Arruma o tamanho do logo
* Fix 1319
Adiciona opção para o usuário decidir se quer ou não mostrar o brasão no painel
* Corrige erros referente a PEP8
* Corrige validação da configuração do brasão da Casa Legislativa
Signed-off-by: João Pedro Sconetto <sconetto.joao@gmail.com>
Signed-off-by: Mariana Mendes <mare.s.mendes@gmail.com>
* Adiciona verificação de existência de casa legislativa
Signed-off-by: Mariana Mendes <mare.s.mendes@gmail.com>
* Adiciona teste de vie em SessaoPlenaria
* Adiciona teste de view no CasaLegislativa e TipoAutor
* Corrigi erros relacionados a PEP8
* Adiciona teste ao ExpedienteMateriaForm
* Fix erro
* Adicionando o atributo de painel aberto e a função para alterar o status pela view
* Verificação do status do painel na abertura da página
* Pequena correção
* Mudando a estrutura do painel para que seja possível a abertura em dias que não haja matérias para votação (#1487)
Signed-off-by: João Pedro Sconetto <sconetto.joao@gmail.com>
* Modifica a lógica para quando abrir a matéria, abrir o painel
* Pequena correção
* Pequena correção
* Corrige #1502 para listar em ordem alfabética no painel
* Reordena a lista de parlamentares #1502
* Move a função para utils onde pode ser utilizada em diversas parte do sistema