From ac82f5e5971fae4131c9eb4ac471ce58d1341ffd Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Fri, 24 May 2019 15:52:30 +0200 Subject: [PATCH] =?UTF-8?q?Adiciona=20op=C3=A7=C3=A3o=20de=20resolver=20ap?= =?UTF-8?q?agados=20em=20producao=20pr=C3=A9=20apagando?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/legacy/migracao_dados.py | 19 +++++++--- .../legacy/scripts/ressuscita_dependencias.py | 37 ++++++++++++------- 2 files changed, 37 insertions(+), 19 deletions(-) diff --git a/sapl/legacy/migracao_dados.py b/sapl/legacy/migracao_dados.py index f44109986..1d3209d55 100644 --- a/sapl/legacy/migracao_dados.py +++ b/sapl/legacy/migracao_dados.py @@ -1839,25 +1839,34 @@ def get_apagados_que_geram_ocorrencias_fk(fks_faltando): apagados = set() for fk in fks_faltando: model_dependente = tabela_legado_p_model[fk["tabela"]] + if model_dependente == Autor: + # isso não funciona para Autor... + continue nome_campo_fk = { v: k for k, v in field_renames[model_dependente].items() }[fk["campo"]] campo_fk = model_dependente._meta.get_field(nome_campo_fk) model_relacionado = campo_fk.related_model - _, tabela_relacionada, _ = get_estrutura_legado(model_relacionado) + _, tabela_relacionada, [campo_pk] = get_estrutura_legado( + model_relacionado + ) deleted = Version.objects.get_deleted(model_relacionado) version = deleted.get(object_id=fk["valor"]) - apagados.add((tabela_relacionada, version)) + apagados.add((tabela_relacionada, campo_pk, version)) return [ - (tabela_relacionada, encode_version(version)) - for tabela, version in apagados + (tabela_relacionada, campo_pk, encode_version(version)) + for tabela, campo_pk, version in apagados ] def revert_delete_producao(dados_versions): + if not dados_versions: + return print("Revertendo registros apagados em produção...") for dados in dados_versions: print(dados) - version = Version.objects.get(**dados) + version = Version.objects.get( + **dados, revision__comment__contains="Deletado" + ) version.revert() print("... sucesso") diff --git a/sapl/legacy/scripts/ressuscita_dependencias.py b/sapl/legacy/scripts/ressuscita_dependencias.py index 2e9935f3d..c4b7f5e24 100644 --- a/sapl/legacy/scripts/ressuscita_dependencias.py +++ b/sapl/legacy/scripts/ressuscita_dependencias.py @@ -524,26 +524,35 @@ def adiciona_ressuscitar(): acrescenta_ao_arquivo_de_ajustes(sqls) -def adiciona_ressuscitar_apagados_em_producao(): +def adiciona_resolve_apagados_em_producao(ressucitar=False): fks_faltando = get_fks_faltando() apagados = get_apagados_que_geram_ocorrencias_fk(fks_faltando) reverter = [] - links = [] - for (tabela, version_data) in apagados: - reverter.append(version_data) - links.append(get_link(tabela, version_data["object_id"], get_slug())) - - _, arq_revert = get_arquivos_ajustes_pre_migracao() - arq_revert.write_file(pyaml.dump(reverter)) - links = "\n".join(links) - acrescenta_ao_arquivo_de_ajustes( - f""" + linhas = [] + for (tabela, campo_pk, version_data) in apagados: + id = version_data["object_id"] + if ressucitar: + reverter.append(version_data) + linhas.append(get_link(tabela, id, get_slug())) + else: + linhas.append( + f"update {tabela} set ind_excluido = 1 where {campo_pk} = {id};" + ) + linhas = "\n".join(linhas) + if ressucitar: + _, arq_revert = get_arquivos_ajustes_pre_migracao() + arq_revert.write_file(pyaml.dump(reverter)) + texto = f""" /* RESSUSCITADOS Apagados já no sapl 3.1 que precisaram ser restaurados: -{links} - +{linhas} */ """ - ) + else: + texto = f""" +-- apagados em producao - apagado tb aqui p usar propagacoes de exclusao +{linhas} +""" + acrescenta_ao_arquivo_de_ajustes(texto)