From 2f28a56295cc88c772cae160dd321bb6b2d8a54a Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Tue, 4 Sep 2018 10:39:47 -0300 Subject: [PATCH] =?UTF-8?q?Retira=20repeti=C3=A7=C3=B5es=20ao=20ressucitar?= =?UTF-8?q?=20deps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/legacy/scripts/ressucita_dependencias.py | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) 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)