diff --git a/sapl/legacy/migracao_dados.py b/sapl/legacy/migracao_dados.py index db288561f..9b7aecf86 100644 --- a/sapl/legacy/migracao_dados.py +++ b/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 Autor, TipoAutor, cria_models_tipo_autor from sapl.comissoes.models import Comissao, Composicao, Participacao +from sapl.legacy.models import NormaJuridica as OldNormaJuridica from sapl.legacy.models import TipoNumeracaoProtocolo from sapl.materia.models import (AcompanhamentoMateria, Proposicao, StatusTramitacao, TipoDocumento, @@ -1072,22 +1073,23 @@ def adjust_normajuridica_depois_salvar(): # Ajusta relação M2M ligacao = NormaJuridica.assuntos.through - def gen_ligacoes(): - from sapl.legacy.models import NormaJuridica as OldNormaJuridica + assuntos_migrados, normas_migradas = [ + set(model.objects.values_list('id', flat=True)) + for model in [AssuntoNorma, NormaJuridica]] - assuntos_migrados, normas_migradas = [ - set(model.objects.values_list('id', flat=True)) - for model in [AssuntoNorma, NormaJuridica]] + def filtra_assuntos_migrados(cod_assunto): + return [a for a in map(int, cod_assunto.split(',')) + if a in assuntos_migrados] + norma_para_assuntos = [ + (norma, filtra_assuntos_migrados(cod_assunto)) 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(',')) - if a in assuntos_migrados] - for assunto in assuntos: - yield ligacao(normajuridica_id=norma, assuntonorma_id=assunto) - - ligacao.objects.bulk_create(gen_ligacoes()) + ligacao.objects.bulk_create( + ligacao(normajuridica_id=norma, assuntonorma_id=assunto) + for norma, assuntos in norma_para_assuntos + for assunto in assuntos) def vincula_autor(new, old, model_relacionado, campo_relacionado, campo_nome):