From 9fe89e93fb088c196c55f9efdee2d14d29619937 Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Sat, 27 Apr 2019 19:12:27 +0200 Subject: [PATCH] Ignora ja_migrados ao migrar assuntos de norma --- sapl/legacy/migracao_dados.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/sapl/legacy/migracao_dados.py b/sapl/legacy/migracao_dados.py index 7b128d036..683180e9d 100644 --- a/sapl/legacy/migracao_dados.py +++ b/sapl/legacy/migracao_dados.py @@ -1348,20 +1348,31 @@ def adjust_normajuridica_depois_salvar(): for model in [AssuntoNorma, NormaJuridica]] def filtra_assuntos_migrados(cod_assunto): + """cod_assunto é uma string com cods separados por vírgulas + p. ex.: 1,2,3,99 + """ if not cod_assunto: return [] cods = {int(a) for a in cod_assunto.split(',') if a} return sorted(cods.intersection(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')] + old_normajurica_cod_assuntos = OldNormaJuridica.objects.filter( + pk__in=normas_migradas).values_list('pk', 'cod_assunto') + ja_migrados = set(ligacao.objects.values_list( + 'normajuridica_id', 'assuntonorma_id')) + + normas_assuntos = [ + (norma, assunto) + for norma, cod_assunto in old_normajurica_cod_assuntos + for assunto in filtra_assuntos_migrados(cod_assunto) + if (norma, assunto) not in ja_migrados + ] + + assert not Version.objects.get_deleted(AssuntoNorma) ligacao.objects.bulk_create( ligacao(normajuridica_id=norma, assuntonorma_id=assunto) - for norma, assuntos in norma_para_assuntos - for assunto in assuntos) + for norma, assunto in normas_assuntos) def adjust_autor(new, old):