Browse Source

Feat(Proposicao): Ofício já nasce marcado como documento de gabinete

Evita depender de alguém lembrar de marcar a caixa em Tabelas Auxiliares
depois do deploy: a migration de dados marca dispensa_protocolo no tipo de
proposição "Ofício" que já existir no banco.

A comparação normaliza acentos, espaços e caixa, porque a descrição é digitada
em cada Casa e aparece como "Ofício", "OFICIO" ou "oficio". Casas que não têm
esse tipo cadastrado não são afetadas.

A migration é reversível: o reverse desmarca os mesmos tipos.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
pull/3858/head
Gustavo 1 month ago
parent
commit
aa513ef687
  1. 46
      sapl/materia/migrations/0098_marca_oficio_como_documento_gabinete.py

46
sapl/materia/migrations/0098_marca_oficio_como_documento_gabinete.py

@ -0,0 +1,46 @@
import unicodedata
from django.db import migrations
# Tipos de proposição que já nascem como documento de gabinete, sem
# necessidade de configuração manual em Tabelas Auxiliares.
DESCRICOES_GABINETE = {'oficio'}
def _normalizar(descricao):
"""Remove acentos, espaços das pontas e caixa, para comparar descrições.
A descrição é digitada pelo usuário em cada Casa, então aparece como
'Ofício', 'OFICIO', 'oficio' etc.
"""
texto = unicodedata.normalize('NFKD', descricao or '')
texto = ''.join(c for c in texto if not unicodedata.combining(c))
return texto.strip().lower()
def _aplicar(apps, valor):
TipoProposicao = apps.get_model('materia', 'TipoProposicao')
for tipo in TipoProposicao.objects.all():
if _normalizar(tipo.descricao) in DESCRICOES_GABINETE:
tipo.dispensa_protocolo = valor
tipo.save(update_fields=['dispensa_protocolo'])
def marcar(apps, schema_editor):
_aplicar(apps, True)
def desmarcar(apps, schema_editor):
_aplicar(apps, False)
class Migration(migrations.Migration):
dependencies = [
('materia', '0097_add_dispensa_protocolo_tipoproposicao'),
]
operations = [
migrations.RunPython(marcar, desmarcar),
]
Loading…
Cancel
Save