mirror of https://github.com/interlegis/sapl.git
Browse Source
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
1 changed files with 46 additions and 0 deletions
@ -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…
Reference in new issue