diff --git a/sapl/legacy/scripts/ressucita_dependencias.py b/sapl/legacy/scripts/ressucita_dependencias.py index 1221721b0..e4b397406 100644 --- a/sapl/legacy/scripts/ressucita_dependencias.py +++ b/sapl/legacy/scripts/ressucita_dependencias.py @@ -1,15 +1,16 @@ +from collections import OrderedDict from textwrap import dedent -import texttable import yaml -from unipath import Path +import texttable from sapl.legacy.migracao_dados import (PROPAGACOES_DE_EXCLUSAO, campos_novos_para_antigos, exec_legado, get_arquivo_ajustes_pre_migracao, models_novos_para_antigos) from sapl.legacy_migration_settings import (DIR_DADOS_MIGRACAO, DIR_REPO, NOME_BANCO_LEGADO) +from unipath import Path def stripsplit(ll): @@ -19,6 +20,7 @@ def stripsplit(ll): def _tab_legado(model): return models_novos_para_antigos[model]._meta.db_table + fks_legado = { (_tab_legado(m), campos_novos_para_antigos[f]): _tab_legado(f.related_model) # noqa for m in models_novos_para_antigos @@ -342,6 +344,10 @@ def get_url(slug): return 'sapl.{}.leg.br'.format(slug.replace('-', '.')) +def sem_repeticoes_mantendo_ordem(sequencia): + return OrderedDict.fromkeys(sequencia).keys() + + def get_sqls_desexcluir_criar(preambulo, desexcluir, criar, slug): sqls_links = [get_sql(*(args + (slug,))) for itens, get_sql in ((desexcluir, get_sql_desexcluir), @@ -351,7 +357,15 @@ def get_sqls_desexcluir_criar(preambulo, desexcluir, criar, slug): return '' else: sqls, links = zip(*sqls_links) - links = [l for ll in links for l in ll] # flatten + + sqls = [dedent(s.strip()) + ';' + for sql in sqls + for s in sql.split(';') if s.strip()] + sqls = sem_repeticoes_mantendo_ordem(sqls) + + links = (l for ll in links for l in ll) # flatten + links = sem_repeticoes_mantendo_ordem(links) + sqls, links = ['\n'.join(sorted(s)) for s in [sqls, links]] return TEMPLATE_RESSUCITADOS.format(preambulo, links, sqls)