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)