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