Browse Source

Refatora adjuste de norma

pull/1847/head
Marcio Mazza 7 years ago
parent
commit
ab56ccd194
  1. 26
      sapl/legacy/migracao_dados.py

26
sapl/legacy/migracao_dados.py

@ -23,6 +23,7 @@ from unipath import Path
from sapl.base.models import AppConfig as AppConf from sapl.base.models import AppConfig as AppConf
from sapl.base.models import Autor, TipoAutor, cria_models_tipo_autor from sapl.base.models import Autor, TipoAutor, cria_models_tipo_autor
from sapl.comissoes.models import Comissao, Composicao, Participacao from sapl.comissoes.models import Comissao, Composicao, Participacao
from sapl.legacy.models import NormaJuridica as OldNormaJuridica
from sapl.legacy.models import TipoNumeracaoProtocolo from sapl.legacy.models import TipoNumeracaoProtocolo
from sapl.materia.models import (AcompanhamentoMateria, Proposicao, from sapl.materia.models import (AcompanhamentoMateria, Proposicao,
StatusTramitacao, TipoDocumento, StatusTramitacao, TipoDocumento,
@ -1072,22 +1073,23 @@ def adjust_normajuridica_depois_salvar():
# Ajusta relação M2M # Ajusta relação M2M
ligacao = NormaJuridica.assuntos.through ligacao = NormaJuridica.assuntos.through
def gen_ligacoes(): assuntos_migrados, normas_migradas = [
from sapl.legacy.models import NormaJuridica as OldNormaJuridica set(model.objects.values_list('id', flat=True))
for model in [AssuntoNorma, NormaJuridica]]
assuntos_migrados, normas_migradas = [ def filtra_assuntos_migrados(cod_assunto):
set(model.objects.values_list('id', flat=True)) return [a for a in map(int, cod_assunto.split(','))
for model in [AssuntoNorma, NormaJuridica]] if a in assuntos_migrados]
norma_para_assuntos = [
(norma, filtra_assuntos_migrados(cod_assunto))
for norma, cod_assunto in OldNormaJuridica.objects.filter( for norma, cod_assunto in OldNormaJuridica.objects.filter(
pk__in=normas_migradas).values_list('pk', 'cod_assunto'): pk__in=normas_migradas).values_list('pk', 'cod_assunto')]
assuntos = [a for a in map(int, cod_assunto.split(',')) ligacao.objects.bulk_create(
if a in assuntos_migrados] ligacao(normajuridica_id=norma, assuntonorma_id=assunto)
for assunto in assuntos: for norma, assuntos in norma_para_assuntos
yield ligacao(normajuridica_id=norma, assuntonorma_id=assunto) for assunto in assuntos)
ligacao.objects.bulk_create(gen_ligacoes())
def vincula_autor(new, old, model_relacionado, campo_relacionado, campo_nome): def vincula_autor(new, old, model_relacionado, campo_relacionado, campo_nome):

Loading…
Cancel
Save