Browse Source

Adiciona opção de resolver apagados em producao pré apagando

migracao
Marcio Mazza 6 years ago
parent
commit
ac82f5e597
  1. 19
      sapl/legacy/migracao_dados.py
  2. 37
      sapl/legacy/scripts/ressuscita_dependencias.py

19
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")

37
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 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)

Loading…
Cancel
Save